2008/5/20 Paolo Mantovani <[EMAIL PROTECTED]>:

> Il lunedì 19 maggio 2008 14:20:48 SG ha scritto:
> > jack ha scritto:
> > > E' questo che mi lascia perplesso: lo step 3 altro non e' se non l'
> "Int"
> > > (od il "Fix") del valore di ritorno di step 2 che e' "555"...perche',
> > > invece, si ha "554"?
> >
> > Ciao jack,
> > ha ragione ... c'è qualcosa che non va.
> >
> > Al volo  non mi era sembrato strano avere  554 come ritorno di INT(
> > operazione che da come risultato quasi 554,xxxxxxx e qualcosa) perchè
> > poteva non esser vero che.... (come dicevi qualche messaggio fa)
> >
> > /"In teoria son tutti double, quindi non dovrebbero esserci errori di
> > conversione " /
>
> Invece secondo me si tratta proprio di un problema di conversione
> Bisogna ricordarsi che il computer ragiona sempre in binario quindi con le
> potenze del 2
> Quando si tratta di numeri con la virgola quindi, il pc ragiona sempre
> con le
> potenze del 2 ma esponenti negativi (ovviamente)
>
> Ad esempio, 0.5 è uguale a (1*2^-1), perciò in base 2 si scriverà 0.1
> allo stesso modo 0.625 si scriverà 0.101 (base2)
> ovvero 1*(2^-1) + 0*(2^-2) + 1*(2^-3)
>
> Per scrivere 0.555 in forma binaria con una precisione arbitraria però,
> servirebbe un numero infinito di decimali (forse sarebbe meglio
> chiamarli "binariali"?) dato che nella conversione il numero diventa
> periodico.
> Questo capita molto spesso nelle conversioni dei numeri con la virgola.
>
> La precisione arbitraria però non può esistere nel computer, perciò ad un
> certo punto le cifre binarie dopo la virgola vengono troncate.
>
> Quando viene effettuata la conversione inversa, da binario a decimale,
> avremo
> perciò che il nostro 0.555 iniziale sarà diventato .55499999999...eccetera
> Ovviamente moltiplicando per 1000 e troncando i decimali ti ritroverai
> con un
> 554
>
> In sostanza, per tener conto di questo problema dovresti effettuare
> *prima* le
> moltiplicazioni, e solo dopo la divisione.
>
> Oppure, lavori sulla rappresentazione testuale del numero.
>
> ciao
> Paolo M


Credo di aver capito il problema e ti ringrazio della risposta precisa e
dettagliata :)

Sulla rappresentazione "testuale" c' e' un bell' esempio nel codice del
seguente link:

http://www.oooforum.org/forum/viewtopic.phtml?t=29932&highlight=round

Ciao e grazie ancora :)

Rispondere a