Differenze tra le versioni di "Troncare alcune cifre decimali in un valore in virgola mobile"

Da Gambas-it.org - Wikipedia.
 
Riga 1: Riga 1:
Poniamo il caso che da questo valore in virgola mobile <FONT Color=darkgreen>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).
+
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()
+
  Public Sub Main()
 
   
 
   
 
   Dim f As Float = 5.123456789
 
   Dim f As Float = 5.123456789
Riga 12: Riga 12:
 
   Print f
 
   Print f
 
   
 
   
  '''End'''
+
  End
  
 
===Usando la funzione "Int()"===
 
===Usando la funzione "Int()"===
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim f As Float = 5.123456789
 
   Dim f As Float = 5.123456789
Riga 24: Riga 24:
 
   Print f
 
   Print f
 
   
 
   
  '''End'''
+
  End
  
 
===Usando la funzione "CLong()" o "CInt()"===
 
===Usando la funzione "CLong()" o "CInt()"===
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim f As Float = 5.123456789
 
   Dim f As Float = 5.123456789
Riga 36: Riga 36:
 
   Print f
 
   Print f
 
   
 
   
  '''End'''
+
  End
  
 
===Usando la funzione "Floor()"===
 
===Usando la funzione "Floor()"===
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim f As Float = 5.123456789
 
   Dim f As Float = 5.123456789
Riga 48: Riga 48:
 
   Print f
 
   Print f
 
   
 
   
  '''End'''
+
  End
  
 
===Ottenere un numero in formato stringa usando la funzione "Format()"===
 
===Ottenere un numero in formato stringa usando la funzione "Format()"===
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim f As Float = 5.123456789
 
   Dim f As Float = 5.123456789
Riga 57: Riga 57:
 
   Print Format(f, "#.##")
 
   Print Format(f, "#.##")
 
   
 
   
  '''End'''
+
  End
  
 
===Usando la funzione esterna di C "printf()"===
 
===Usando la funzione esterna di C "printf()"===
Riga 66: Riga 66:
 
    
 
    
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim f As Float = 5.123456789
 
   Dim f As Float = 5.123456789
Riga 72: Riga 72:
 
   printf("%.3lf", f)
 
   printf("%.3lf", f)
 
    
 
    
  '''End'''
+
  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à.

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