floating point, questo sconosciuto …

Scritto il 12 luglio 2005 da Maurizio Pelizzone

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.

Questo articolo è stato pubblicato il 12 luglio 2005 alle 10:30 pm ed è stato letto
Archiviato sotto sviluppo.

Se questo post ti è piaciuto puoi iscriverti al mio Feed Rss e ricevere direttamente gli aggiornamenti di questo blog sul tuo FeedReader oppure puoi decidere di offrirmi un caffè.
Se ti va puoi lasciare un commento e leggere quelli degli altri, ma se preferisci puoi passare direttamente al .


Lascia un messaggio