Что определяет точность с плавающей точкой в ​​Python? - PullRequest
5 голосов
/ 02 марта 2011

Я узнал об операторе «точно равно» в Erlang, который сравнивает не только значения , но и типы данных чисел, и мне было любопытно, как все работает в Python и его единицах, равнок оператору.Поэтому, убедившись, что

>>> 1 == 1.0 
True

, я задумался о точности с плавающей запятой и дошел до этого

>>> 0.9999999999999999 == 1
False
>>> 0.99999999999999999 == 1
True
>>>

Может ли кто-нибудь объяснить, как здесь определяется точность с плавающей запятой?Он работает одинаково в 2.7.1 и 3.1.2

Ответы [ 2 ]

8 голосов
/ 02 марта 2011

Пожалуйста, сверьтесь с документацией Python:

http://docs.python.org/tutorial/floatingpoint.html

2 голосов
/ 02 марта 2011

Использование чисел с плавающей точкой опасно.

Если вам нужна точность на этом глубоком уровне, используйте тип Decimal.

Подробнее здесь: http://docs.python.org/library/decimal.html

...