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







---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Rispondere a