Прямой ответ : Вы не можете. Поплавки неточные, по дизайну. Хотя у поплавков python более чем достаточно точности для представления 1.0000, они никогда не будут представлять "1-точку-ноль-ноль-ноль-ноль". Скорее всего, это так хорошо, как вам нужно. Вы всегда можете использовать форматирование строки, если вам нужно отобразить четыре десятичных знака.
print '%.3f' % float(1.0000)
Косвенный ответ : Используйте модуль decimal
.
from decimal import Decimal
d = Decimal('1.0000')
Пакет decimal
предназначен для решения всех этих проблем с произвольной точностью. Десятичное число «1,0000» равно точно 1,0000, не больше, не меньше. Однако обратите внимание, что сложности с округлением означают, что вы не можете конвертировать из float
напрямую в Decimal
; Вы должны передать строку (или целое число) конструктору.