Что определяет точность с плавающей запятой в python?

#python #floating-point #precision

#python #плавающая точка #точность

Вопрос:

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

 >>> 1 == 1.0 
True
  

Я задавался вопросом о точности с плавающей запятой и добрался до этого

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

Не мог бы кто-нибудь объяснить, как здесь определяется точность с плавающей запятой? Это работает одинаково как в 2.7.1, так и в 3.1.2

Ответ №1:

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

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

Ответ №2:

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

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

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