Все десятичные знаки [Python] - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь создать сценарий приближения E (математическая константа). Но это дает мне только 15 знаков после запятой. Затем я добавил Decimal(), который увеличил количество знаков после запятой, но все еще был ограничен до 50 знаков после запятой. Есть ли способ напечатать все десятичные дроби. (Если нет, какой предел?)


Вот мой код:

from decimal import *
e=1
x = input("Iterations:")
x=int(x)
while 1==1:
    e=1 + e/x
    x -= 1
    if (x <= 0):
        break

print(Decimal(e)) # only prints 50 decimal places

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

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

In [73]: from decimal import Decimal, getcontext                                        
In [74]: getcontext().prec = 70                                                         
In [75]: e = Decimal(1)                                                                 
In [76]: x = Decimal(200000)                                                            
In [77]: while x>0: 
    ...:     e = Decimal(1)+e/x 
    ...:     x = x-Decimal(1)                                                           
In [78]: e                                                                              
Out[78]: Decimal('2.718281828459045235360287471352662497757247093699959574966967627724076')
In [79]: str(e)[:52]                                                                    
Out[79]: '2.71828182845904523536028747135266249775724709369995'
0 голосов
/ 30 октября 2018

Попробуйте float64 из numpy . Они предлагают большую точность

...