2010-11-10 2 views
0

Можно создать дубликат:
python limiting floats to two decimal pointsСделать Python aritmetic операции

Если я сделать это: 12.45-12

в Python ответ я получаю: 0,44999999999999929

Я делаю это, чтобы сделать это: 0.45?

BTW Я не забыл делать: 12.45-12.0 Но никакого результата.

+2

Duplicate. Пожалуйста, найдите плавающий пункт в Python. Пожалуйста. Вы говорите о валюте? Деньги? Используйте 'decimal'. –

ответ

5

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

Например, 0,25 может: это 0.01 (0 * 1, 0 * 1/2, 1 * 1/4). 0,1 не может (0.0001100110011...), так же, как вы не можете написать 1/3 как полную десятичную (0.3333333333...).

Если вы

print(12.45-12) 

вы получите

0.45 

потому что print отображает только первые значащие цифры.

См. Python docs за отличное резюме.

Если вы позаботились о том, чтобы десятичные значения были точными (например, чтобы избежать сценария Супермена III в финансовом учреждении), посмотрите на модуль Decimal.

2

Также в Python 2.4 вверх, проверьте модуль decimal, если вам нужна более высокая точность.

Смежные вопросы