Il giorno 20/lug/07, alle ore 16:03, Gilberto De Faveri ha scritto:
Non conosco i dettagli implementativi dell'operatore di divisione
intera "\", ma il risultato è -841 perchè evidentemente viene
effettuato un cast ad Integer degli operandi prima di effettuare la
divisione, e nel tuo caso il risultato di (b-a) non è
rappresentabile in 32 bit.
Puoi ottenere il risultato desiderato semplicemente utilizzando il
normale operatore di divisione "/":
Dim a,b,L As Double
Dim Ln As Integer
a=222837
b=3267784437
L=2551443
Ln=(b-a)/L
In questo modo non vengono effettuati downcast durante il calcolo
ma solo durante l'assegnamento di (b-a)/L a Ln che è un Integer.
On Jul 20, 2007, at 14:17 , Giovanni Gualeni wrote:
Ciao
mi e' capitato per caso:
Dim a,b,L As Double
Dim Ln As Integer
a=222837
b=3267784437
L=2551443
Ln=(b-a)\L
il risultato (usando il diviso intero \) dovrebbe essere 1280.
Pero' esce 841! Perche'?
Giovanni
Ok, la risposta e' esauriente. Apparentemente sembra insensato che
faccia una simile operazione ma non lo e'. Grazie. Giovanni
|