Differenze tra le versioni di "Troncare alcune cifre decimali in un valore in virgola mobile"
Da Gambas-it.org - Wikipedia.
(2 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
− | Poniamo il caso che da questo valore in virgola mobile <FONT Color= | + | Poniamo il caso che da questo valore in virgola mobile <FONT Color=red>5,123456789</font> vogliamo troncare alcuni decimali, in modo tale da far restare soltanto le prime due cifre decimali (ossia sino ai centesimi, ottenendo insomma il valore finale: 5,12). |
Mostriamo alcune modalità. | Mostriamo alcune modalità. | ||
===Usando la funzione "Fix()"=== | ===Usando la funzione "Fix()"=== | ||
− | + | Public Sub Main() | |
Dim f As Float = 5.123456789 | Dim f As Float = 5.123456789 | ||
Riga 12: | Riga 12: | ||
Print f | Print f | ||
− | + | End | |
===Usando la funzione "Int()"=== | ===Usando la funzione "Int()"=== | ||
− | + | Public Sub Main() | |
Dim f As Float = 5.123456789 | Dim f As Float = 5.123456789 | ||
Riga 24: | Riga 24: | ||
Print f | Print f | ||
− | + | End | |
===Usando la funzione "CLong()" o "CInt()"=== | ===Usando la funzione "CLong()" o "CInt()"=== | ||
− | + | Public Sub Main() | |
Dim f As Float = 5.123456789 | Dim f As Float = 5.123456789 | ||
Riga 36: | Riga 36: | ||
Print f | Print f | ||
− | + | End | |
+ | |||
+ | ===Usando la funzione "Floor()"=== | ||
+ | Public Sub Main() | ||
+ | |||
+ | Dim f As Float = 5.123456789 | ||
+ | Dim decimali As Byte = 2 | ||
+ | |||
+ | f = Floor(f * 10 ^ decimali) / 10 ^ decimali | ||
+ | |||
+ | Print f | ||
+ | |||
+ | End | ||
===Ottenere un numero in formato stringa usando la funzione "Format()"=== | ===Ottenere un numero in formato stringa usando la funzione "Format()"=== | ||
− | + | Public Sub Main() | |
Dim f As Float = 5.123456789 | Dim f As Float = 5.123456789 | ||
Riga 45: | Riga 57: | ||
Print Format(f, "#.##") | Print Format(f, "#.##") | ||
− | + | End | |
===Usando la funzione esterna di C "printf()"=== | ===Usando la funzione esterna di C "printf()"=== | ||
Riga 54: | Riga 66: | ||
− | + | Public Sub Main() | |
Dim f As Float = 5.123456789 | Dim f As Float = 5.123456789 | ||
Riga 60: | Riga 72: | ||
printf("%.3lf", f) | printf("%.3lf", f) | ||
− | + | End |
Versione attuale delle 17:06, 1 lug 2024
Poniamo il caso che da questo valore in virgola mobile 5,123456789 vogliamo troncare alcuni decimali, in modo tale da far restare soltanto le prime due cifre decimali (ossia sino ai centesimi, ottenendo insomma il valore finale: 5,12).
Mostriamo alcune modalità.
Indice
Usando la funzione "Fix()"
Public Sub Main() Dim f As Float = 5.123456789 f = Fix(f * 100) / 100 Print f End
Usando la funzione "Int()"
Public Sub Main() Dim f As Float = 5.123456789 Dim decimali As Byte = 2 f = Int(f * 10 ^ decimali) / 10 ^ decimali Print f End
Usando la funzione "CLong()" o "CInt()"
Public Sub Main() Dim f As Float = 5.123456789 Dim decimali As Byte = 2 f = CLong(f * 10 ^ decimali) / 10 ^ decimali Print f End
Usando la funzione "Floor()"
Public Sub Main() Dim f As Float = 5.123456789 Dim decimali As Byte = 2 f = Floor(f * 10 ^ decimali) / 10 ^ decimali Print f End
Ottenere un numero in formato stringa usando la funzione "Format()"
Public Sub Main() Dim f As Float = 5.123456789 Print Format(f, "#.##") End
Usando la funzione esterna di C "printf()"
L'uso di questa soluzione permetterà, però, soltanto di mostrare meramente il risutato.
' int printf(const char *format, ...) ' Sends formatted output to stdout. Private Extern printf($format As String, num As Float) As Integer In "libc:6" Public Sub Main() Dim f As Float = 5.123456789 printf("%.3lf", f) End