Ошибка вызвана ошибками округления с плавающей запятой. Вы можете выбрать округление строк, используя format
:
str(0.1 + 0.2)
# => ''0.30000000000000004'
'{:.10f}'.format(0.1 + 0.2)
# => '0.3000000000'
Строка формата .10f
сообщает format
, что вы хотите использовать число с плавающей точкой с точностью до 10 цифр.
В качестве альтернативы вы можете использовать более точные представления чисел, такие как decimal
from decimal import Decimal
str(Decimal('0.1') + Decimal('0.2'))
# => '0.3'
Обратите внимание, как 0.1
и 0.2
заключены в кавычки, чтобы сделать их строками, чтобы они не были преобразованы в float
и не были обоснованы.