Десятичный модуль Python, дающий другие числа, чем калькулятор - PullRequest
0 голосов
/ 24 января 2019

Я хочу получить большое количество точных цифр в результатах делений, таких как 1/7, но Python дает результаты, отличные от высокоточного калькулятора.

Я пробовал десятичную библиотеку с Python 3 ипопытался изменить его точность и режим округления, но он дает результат, отличный от калькулятора.

from decimal import *
getcontext().prec = 40
print (Decimal(1/7))

Высокоточный калькулятор на https://keisan.casio.com/calculator говорит, что результатом является повторяющийся паттерн 142857, ноРезультат Python нарушает этот шаблон после 16 цифр.Вот число, которое он дает:

0.142857142857142849212692681248881854116916656494140625

1 Ответ

0 голосов
/ 24 января 2019

Вы выполняете вычисление с обычным делением с плавающей запятой (1/7), а затем передаете результат в Decimal, поэтому вы пытаетесь получить дополнительную точность от чего-то, что уже аппроксимировано.

С другой сторонырука, если вы сделаете

Decimal(1)/7

, вы получите более точный результат:

Decimal('0.1428571428571428571428571428571428571429')
...