Lo so, ma andrebbero perse parecchie cifre. Se ti serve il numero esatto come fai?
Io avrei approntato un piccolo artificio per ottenere il valore corrispondente alla notazione scientifica necessitata dal fatto che Gambas, e non solo Gambas, non riesce a gestire più di 8 byte (64 bit) per i valori numerici. D'altronde anche le comunissime calcolatrici, di fronte ad un numero troppo grande o troppo piccolo forniscono automaticamente un risultato in notazione scientifica.
Il codice che ne è venuto fuori e che ho già provato é naturalmente un esempio da modificare adeguatamente in funzione del lavoro di acquisizione e restituzione dati:
Public Sub Form_Open()
Dim Risultato As Float = 1
Dim i As Byte
Dim iCiclo As Integer
Dim imoltiplica As Integer
Dim $Risultato As String
Dim $Segno As String
Dim $StriMia As String
For iCiclo = 0 To 1
If iCiclo = 1 Then
Risultato = 2.34 * 1 / 100000000000
Else
For i = 2 To 40
Risultato *= i
Next
Endif
$Risultato = CFloat(Risultato)
Print "Risultato ='" & Risultato & "'"
i = InStr($Risultato, "E")
If i <> 0 Then
$StriMia = Right($Risultato, Len($Risultato) - (i))
imoltiplica = Int(Val(Right($StriMia, Len($StriMia) - 1)))
$Segno = Left($StriMia)
$Risultato = Left($Risultato, i - 1)
$Risultato = Replace($Risultato, ".", "")
If $Segno = "-" Then
$StriMia = String$(10, "0")
$Risultato = "0." & $StriMia & "234"
Else
Print String$(imoltiplica - Len($Risultato), "0")
$StriMia = String$(imoltiplica - Len($Risultato), "0")
$Risultato = Left($Risultato) & "." & Right($Risultato, Len($Risultato) - 1) & $StriMia
Endif
Print "$Risultato ='" & $Risultato & "'"
Endif
Next
Me.Close
End
Il risultato prodotto in laboratorio è:
Risultato ='8.1591528324789E+47'
000000000000000000000000000000000
$Risultato ='8.1591528324789000000000000000000000000000000000'
Risultato ='2.34E-11'
$Risultato ='0.0000000000234'
Se dovesse essere soddisfacente potrebbe essere trasformato in una classe da download.