Ottenere la parte intera e quella decimale di un numero in virgola mobile

Da Gambas-it.org - Wikipedia.

Per estrarre da un numero in virgola mobile sia la parte intera che quella decimale, è possibile adoperare complessivamente almeno 5 modalità.


Ottenere la parte intera

Si potrà ottenere la parte intera di un numero in virgola mobile mediante le seguenti funzioni:

  • Fix();
  • Int();
  • Split();
  • Scan();
  • Left() e InStr().

Esempio pratico:

Public Sub Main()

' Con la funzione "Fix()":
  Print Fix(5 / 3)
 
' Con la funzione "Int()" (con un numero positivo):
  Print Int(5 / 3)
 
' Con la funzione "Split()":
  Print Val(Split(CStr(5 / 3), ".")[0])
   
' Con la funzione "Scan()":
  Print Scan(CStr(5 / 3), "*.*")[0]

' Con le funzioni "Left()" e "InStr()":
  Print Left(CStr(5 / 3), InStr(CStr(5 / 3), ".") - 1)

' Servendosi semplicemente dell'operatore " \ ":
  Print 5 \ 3

' Sottraendo la parte decimale individuata con la funzione "Frac()":
  Print 5 / 3 - Frac(5 / 3)

End


Ottenere la parte decimale

Si potrà ottenere la parte decimale di un numero in virgola mobile mediante le seguenti funzioni:

  • Frac();
  • Split();
  • Scan();
  • Right() e InStr().

Esempio pratico:

Public Sub Main()

' Con la funzione "Frac()":
  Print Frac(5 / 3)
  
' Con la funzione "Split()" (viene estratta senza lo zero né la virgola, ossia solo i numeri grezzi che compongono la parte):
  Print Val(Split(CStr(5 / 3), ".")[1])
   
' Con la funzione "Scan()" (viene estratta senza lo zero né la virgola, ossia solo i numeri grezzi che compongono la parte):
  Print Scan(CStr(5 / 3), "*.*")[1]

' Con le funzioni "Right()" e "InStr()" (viene estratta senza lo zero né la virgola, ossia solo i numeri grezzi che compongono la parte):
  Print Right(CStr(5 / 3), Len(s) - InStr(CStr(5 / 3), "."))

' Utilizzando la funzione parte frazionaria "x - [x]" servendosi della funzione "Fix()":
  Print 5 / 3 - Fix(5 / 3)

End