si potrebbe fare così, (San Midi assolvimi)
Public sub scopri_separatore() as string
Dim a as float
Dim b as string
a=5/2
b=str(a)
return mid(b,2,1)
end
...se poi vuoi complicarti la vita.... :D
Public sub scopri_separatore() as string
Dim a As Float
Dim b As String
Dim p As Pointer
a = 5 / 7
b = Str(a)
p = VarPtr(b)
' Dereferenziamo il Puntatore leggendo - come valore Byte - solo il 2° valore della originaria stringa.
' Quindi convertiamo quel valore di tipo Byte nel corrispettivo carattere ASCII:
Return Chr(Byte@(p + 1))
End
Ad ogni modo l'uso che hai fatto della funzione Str() è corretto ed opportuno, poiché la conversione, da essa effettuata, utilizza la corrente localizzazione per convertire numeri e date.
Sottopongo all'attenzione, per mera curiosità, una seconda possibilità utilizzando un paio di specifiche funzioni esterne della libreria /usr/include/locale.h :
Library "libc:6"
Public Struct Lconv
decimal_point As Pointer
thousands_sep As Pointer
End Struct
Private Const LC_NUMERIC As Integer = 1
' char *setlocale (int __category, const char *__locale)
' Set and/or return the current locale.
Private Extern setlocale(category As Integer, locale As String) As Pointer
' struct lconv *localeconv(void)
' Return the numeric/monetary information for the current locale.
Private Extern localeconv() As Lconv
Public Sub Main()
Dim lc As New Lconv
' Specifichiamo la categoria e l'ambiente dell'impostazione locale per lingua:
setlocale(LC_NUMERIC, System.Language)
' Ritorna un Puntatore alla Struttura che dà informazioni sui simboli numerici secondo l'impostazione locale:
lc = localeconv()
With lc
Print "- Impostazioni locali numeriche -\n\nSeparatore decimale: "; String@(.decimal_point)
Print "Separatore migliaia: "; String@(.thousands_sep)
End With
End
.....oppure anche così: ;D
Public Sub Main()
Dim a As Float
Dim bb As Byte[]
a = 5 / 7
bb = Byte[].FromString(Str(a))
Print Chr(bb[1])
End