代码之家  ›  专栏  ›  技术社区  ›  VinceKaj

所有小数位

  •  -3
  • VinceKaj  · 技术社区  · 6 年前

    我试图创建一个E(数学常数)近似脚本。但它只给我15位小数。然后我添加了一个 Decimal()


    这是我的密码:

    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 回复  |  直到 6 年前
        1
  •  1
  •   gboffi    6 年前

    将浮点结果转换为 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'
    
        2
  •  -2
  •   Jose Garcia    6 年前

    float64 numpy