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: Giovanni Gualeni <ggualeni at tiscali dot it>
Date: Fri, 20 Jul 2007 17:16:14 +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> <315C50DB-C298-46EB-82A0-04A12BCE7848 at omnidea dot it>
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

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