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.