Python 3 проблемы с плавающей точкой? - PullRequest
0 голосов
/ 12 января 2020

Я пытался выполнить следующий расчет в python 3:

https://i.stack.imgur.com/f5y7z.png

добавить с:

https://i.stack.imgur.com/Txoya.png

, который должен возвращать 0 (изображения были сделаны в wolframalpha).

Когда я пытаюсь сделать то же самое вычисление в python:

pow((2*3*5),28)-29*math.floor(pow((2*3*5),28)/29)-1

возвращает 4303955653455607115022335.

значение каждой части:

228767924549610000000000000000000000000000 правильно.

-228767924549609995696044346544392884977665 неверно.

Как можно это исправить?

1 Ответ

0 голосов
/ 12 января 2020

Вы используете деление с плавающей точкой /, которое имеет ограниченную точность, поэтому ваш большой результат округляется.

Вместо этого вы можете получить то, что вам нужно, с целым числом, деление по полу //, которое дает целочисленный результат с неограниченной точностью:

import math
pow((2*3*5),28)-29*(pow((2*3*5),28)//29)-1
# 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...