Perchè se eseguo questa operazione in Visual Basic:
MsgBox (2396.95 - 2311.55)
ottengo
85.3999999999996
e non
85.4
Grazie.
Ciao.![]()
Perchè se eseguo questa operazione in Visual Basic:
MsgBox (2396.95 - 2311.55)
ottengo
85.3999999999996
e non
85.4
Grazie.
Ciao.![]()
basta definire i dati come single
in questo modo otteraai sempre una solo cifra decimale dopo la virgola. nel caso tu ne voglia due con double
Ciro Marotta - Programmatore JAVA - PHP
Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.
La differenza fra un single e un double non sta nel numero di decimali, ma nella precisione (Single con virgola mobile a precisione semplice, Double con virgola mobile a precisione doppia).
E' poi anche vero che un double contiene più decimali ma questo per lo spazio riservato in memoria (4 byte single, 8 byte double).
Il numero di decimali lo decidi tu arrotondando con la Round:
Inserendo i dati cosìcodice:MsgBox CStr(Round(2396.95 - 2311.55, 1))
siccome non sono stati definiti, è come se usassi dei variant che in caso di numeri hanno lo stesso intervallo di un double.MsgBox (2396.95 - 2311.55)
... e non usare while wend è una sintassi deprecata
![]()
come non detto
Ciro Marotta - Programmatore JAVA - PHP
Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.
Esiste anche la funzione Format per decidere il numero di decimali, oltre ad altre cose:
CODE:
Private Sub Command1_Click()
MsgBox Format((2396.95 - 2311.555), "#,##0") 'Nessun decimale
MsgBox Format((2396.95 - 2311.555), "#,##0.0") 'Un decimale
MsgBox Format((2396.95 - 2311.555), "#,##0.00") 'due decimali
MsgBox Format((2396.95 - 2311.555), "#,##0.000") 'Tre decimali
End Sub
LM