Differenze tra le versioni di "Conoscere le impostazioni del separatore decimale nel sistema"
Da Gambas-it.org - Wikipedia.
(Creata pagina con "Per conoscere quale sia il "separatore decimale" in uso in un sistema, è posibile adottare diverse modalità. Ne mostriamo alcune: ===1<SUP>a</sup> modalità=== Mediante l'u...") |
|||
Riga 1: | Riga 1: | ||
− | Per conoscere quale sia il "separatore decimale" in uso in un sistema, è | + | Per conoscere quale sia il "separatore decimale" in uso in un sistema, è possibile adottare diverse modalità. Ne mostriamo alcune: |
===1<SUP>a</sup> modalità=== | ===1<SUP>a</sup> modalità=== | ||
Mediante l'uso della funzione stringa ''Str()'', la quale nell'effettuare la conversione utilizza la corrente localizzazione per convertire numeri e date. [<FONT Size=1>[[#Note|nota 1]]</font>] | Mediante l'uso della funzione stringa ''Str()'', la quale nell'effettuare la conversione utilizza la corrente localizzazione per convertire numeri e date. [<FONT Size=1>[[#Note|nota 1]]</font>] | ||
− | + | Public Sub Main() | |
Dim a as float | Dim a as float | ||
Dim b as string | Dim b as string | ||
− | + | a=5/2 | |
− | + | b=str(a) | |
− | + | Print mid(b,2,1) | |
− | + | End | |
Riga 19: | Riga 19: | ||
===2<SUP>a</sup> modalità=== | ===2<SUP>a</sup> modalità=== | ||
Con l'uso di una variabile di tipo ''Puntatore'': | Con l'uso di una variabile di tipo ''Puntatore'': | ||
− | + | Public Sub Main() | |
Dim a As Float | Dim a As Float | ||
Riga 25: | Riga 25: | ||
Dim p As Pointer | Dim p As Pointer | ||
− | + | a = 5 / 7 | |
− | + | b = Str(a) | |
− | + | p = VarPtr(b) | |
<FONT Color=gray>' ''Dereferenziamo il Puntatore leggendo - come valore Byte - solo il 2° valore della originaria stringa.'' | <FONT Color=gray>' ''Dereferenziamo il Puntatore leggendo - come valore Byte - solo il 2° valore della originaria stringa.'' | ||
Riga 33: | Riga 33: | ||
Print Chr(Byte@(p + 1)) | Print Chr(Byte@(p + 1)) | ||
− | + | End | |
Riga 39: | Riga 39: | ||
===3<SUP>a</sup> modalità=== | ===3<SUP>a</sup> modalità=== | ||
Mediante un vettore di tipo ''Byte[ ]'': | Mediante un vettore di tipo ''Byte[ ]'': | ||
− | + | Public Sub Main() | |
Dim a As Float | Dim a As Float | ||
Dim bb As Byte[] | Dim bb As Byte[] | ||
− | + | ||
− | + | a = 5 / 7 | |
− | + | bb = Byte[].FromString(Str(a)) | |
− | + | ||
− | + | Print Chr(bb[1]) | |
− | + | ||
− | + | End | |
Riga 73: | Riga 73: | ||
− | + | Public Sub Main() | |
Dim lc As New Lconv | Dim lc As New Lconv | ||
<FONT Color=gray>' ''Specifichiamo la categoria e l'ambiente dell'impostazione locale per lingua:''</font> | <FONT Color=gray>' ''Specifichiamo la categoria e l'ambiente dell'impostazione locale per lingua:''</font> | ||
− | + | setlocale(LC_NUMERIC, System.Language) | |
<FONT Color=gray>' ''Ritorna un Puntatore alla Struttura che dà informazioni sui simboli numerici secondo l'impostazione locale:''</font> | <FONT Color=gray>' ''Ritorna un Puntatore alla Struttura che dà informazioni sui simboli numerici secondo l'impostazione locale:''</font> | ||
− | + | lc = localeconv() | |
− | + | With lc | |
− | + | Print "- Impostazioni locali numeriche -\n\nSeparatore decimale: "; String@(.decimal_point) | |
− | + | Print "Separatore migliaia: "; String@(.thousands_sep) | |
− | + | End With | |
− | + | End | |
− | |||
Versione delle 08:15, 21 dic 2023
Per conoscere quale sia il "separatore decimale" in uso in un sistema, è possibile adottare diverse modalità. Ne mostriamo alcune:
1a modalità
Mediante l'uso della funzione stringa Str(), la quale nell'effettuare la conversione utilizza la corrente localizzazione per convertire numeri e date. [nota 1]
Public Sub Main() Dim a as float Dim b as string a=5/2 b=str(a) Print mid(b,2,1) End
2a modalità
Con l'uso di una variabile di tipo Puntatore:
Public Sub Main() 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: Print Chr(Byte@(p + 1)) End
3a modalità
Mediante un vettore di tipo Byte[ ]:
Public Sub Main() Dim a As Float Dim bb As Byte[] a = 5 / 7 bb = Byte[].FromString(Str(a)) Print Chr(bb[1]) End
4a modalità
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
Note
[1] Codice proposto dal membro Akrobaticone del forum gambas-it.org .