realbasic-nug.it
[Top] [All Lists]

Re: Calcoli

To: REALbasic NUG Italian <realbasic-nug dot it at lists dot realsoftware dot com>
Subject: Re: Calcoli
From: Gilberto De Faveri <gilberto dot defaveri at omnidea dot it>
Date: Fri, 20 Jul 2007 16:03:31 +0200
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot it at lists dot realsoftware dot com
References: <D20A1020-AB60-460D-8602-FC8CDA0CC3EB at tiscali dot it>
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




<Prev in Thread] Current Thread [Next in Thread>