2016-12-03 58 views
2

我正在制作一个计算器,我想用pi,不过python只是缩短了pi到12分钟。我想要整个pi。Python不会打印超过12位有效数字。我如何轻松打印?

我有一个文件一个简单的代码名为getpi.py

def getpisend(): 
    pi=*pi to a million places* 
return pi 

,我用这个代码接受它:

import getpi 
print getpi.getpisend() 

但是,仅打印此:

3.14159265359

如何让它在不使用字符串的情况下打印所有一百万位数字。因为那时我不能在计算器中使用它。 我试图改变它变成一个字符串,然后回到一个浮动,但得到这个错误:

Traceback (most recent call last): 
File "use-pi.py", line 2, in <module> 
print (int(pifunc.getpisend())) 
ValueError: invalid literal for int() with base 10:3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381 

` 编辑:这可能是愚蠢的做到这一点,因为它是不实际使用,因为你必须写/打印数据的负载,但这帮助我了解python更多!特别感谢@qxz展示理论!

+3

浮点数在存储器中具有有限的精确量。如果您想存储更多数字,请查看任意精度算术库。 (换句话说,你不能只用一个普通的'号码') – qxz

+0

@qxz好吧。我现在试试 – wowcha

+0

int只能保存一个整数-_- –

回答

6

使用decimal.Decimal

In [57]: f = decimal.Decimal('3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359 
    ...: 408128481117450284102701938521105559644622948954930381') 

In [58]: f 
Out[58]: Decimal('3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381') 

In [59]: f.to_eng_string() 
Out[59]: '3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381' 
+0

我现在正在尝试:) – wowcha

+0

哇 - 刚刚通过它工作:) – wowcha

+0

不要忘了'进口小数'。 –