Python3: конвертировать большой int в float - неверный результат - как это правильно? - PullRequest
0 голосов
/ 05 декабря 2018

Мне нужно сделать некоторое деление на очень большое int в python3 (версия 3.6.7) .Поскольку после деления я всегда получал неправильные результаты (проверялось с небольшими числами), я понял, что это преобразование между int и float.

Почему int(float(number)) возвращает другое число, чем указано вначале?

Номер например

11112156454654632123512435326901347901387409791345202341234653563776467245234565435637654768245987098709846554513216562452354654823453456581

После int(float(number) Я получаю

11112156454654632053401792328854929027579441319469717890945725999319869381390969666824878190611577646608244392592697365262211066608985571328

Спасибо,

Действительно застрял на данный момент.

Йоханнес

1 Ответ

0 голосов
/ 05 декабря 2018

Это типично для двоичной арифметики с плавающей точкой. Документ Python прямо здесь.

Вам следует взглянуть на модуль Десятичный в вашем случае.

from decimal import *
int(Decimal('11112156454654632123512435326901347901387409791345202341234653563776467245234565435637654768245987098709846554513216562452354654823453456581'))
...