Troncare alcune cifre decimali in un valore in virgola mobile

Da Gambas-it.org - Wikipedia.

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

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