[Python-de] Fliesskomma-Genauigkeiten <seufz 0.9/>

M.-A. Lemburg mal at lemburg.com
Wed Apr 25 18:40:34 EDT 2001


Dinu Gherman wrote:
> 
> Hallo,
> 
> anscheinend sind die Listen unter python.org gerade heftig
> blockiert (und unter comp.lang.python ist es mir gerade zu
> voll). Also versuche ich mal hier mein Glueck...
> 
> Kann irgendjemand erklaeren, warum folgendes Verhalten zu
> beobachten ist? Dieser Code steht so im Tutorium fuer 2.1
> und ich wollte nicht so recht glauben, dass das stimmt,
> aber mein Python 2.0 meint auch, "das gehort so":
> 
>   PythonWin 2.0 (#8, Oct 16 2000, 17:27:58) [MSC 32 bit (Intel)]
>   [...]
>   >>> x = 10 * 3.14
>   >>> x
>   31.400000000000002
>   >>> x == 31.4
>   0
>   >>> 3.14
>   3.1400000000000001
>   >>>
> 
> Gibt's da irgendeinen Grund, den man auch als nicht-Guido
> verstehen kann, und wenn ja, warum steht nirgends im FAQ
> etwas dazu?

Das liegt daran, daß Floats (meistens) von der C lib im 
IEEE Standard verbastelt werden und der orientiert sich 
am Dualsystem und nicht dem Dezimalsystem, welches für Humanoide
zugänglicher ist ;-)

Im Ernst, das ist eine FAQ und sollte eigentlich dort auch irgendwo
stehen (ich frage mich warum Tim Peters dort noch nichts vermerkt
hat).

Mit mxNumber wird das alles etwas deutlicher:

>>> from mx.Number import *
>>> Float(3.14)
3.14000000000000012434e+0
>>> Float(10*3.14)
3.14000000000000021316e+1

-- 
Marc-Andre Lemburg
______________________________________________________________________
Company & Consulting:                           http://www.egenix.com/
Python Software:                        http://www.lemburg.com/python/



More information about the Python-de mailing list