Categorie
sviluppo

floating point, questo sconosciuto …

per un cliente ho sviluppato alcune procedure in python che vanno a calcolare il “calo di lavorazione”; in pratica dal peso iniziale di un prodotto sottraggo il peso finale .
niente di speciale tranne per il fatto che in una stampa riepilogativai totali non quadravano …

la precisione di cui avevo bisogno era al centesimo e sono “uscito pazzo” sino a che chiedendo in giro non ho trovato questo documento:

Problema: i numeri in virgola mobile non vengono espressi correttamente dai microprocessori.
es. 1: digitare in shell il valore 1.1 e visualizzare il risultato
es. 2: provare l’espressione “1.1 + 1.1 + 1.1 == 3.3”. Il risultato è false in quanto l’errore comincia ad essere troppo grande per poter essere corretto automaticamente ( entrambi gli operatori infatti contengono l’errore ).

Soluzione 1: Python 2.4 introdurrà il tipo decimal che risolverà questi problemi.
Soluzione 2: Nell’attesa del Python 2.4 è possibile usare il modulo FixedPoint qui allegato. Lo trovate anche su SourceForge
ma la versione scaricabile non è compatibile con Python 2.1 quindi consiglio di usare direttamente il file che vi invio.

Consiglio a tutti di considerare attentamente il problema ed iniziare ad adoperarsi usando soluzioni come quelle qui proposte.

Buon lavoro in fixed point.

bhe … non mi resta che rigraziare Simone per l’imboccata.

Di .:: Maurizio Pelizzone

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.