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
--
gilberto de faveri
omnidea srl
edificio pegaso
parco scientifico tecnologico vega
via delle industrie, 15
30175 venezia marghera
tel +39 041 509 3441
fax +39 041 509 3641
www.omnidea.it
|