Troncare alcune cifre decimali in un valore in virgola mobile

Da Gambas-it.org - Wikipedia.
Versione del 1 giu 2023 alle 08:22 di Vuott (Discussione | contributi) (Creata pagina con "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 (oss...")

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

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à.

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

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