PI中的数字位数不同

Ksh*_*ogi 4 python printing variables pi

我是Python的初学者,我对PI有疑问.

>>> import math
>>> p = math.pi
>>> print p
3.14159265359
>>> math.pi
3.141592653589793
Run Code Online (Sandbox Code Playgroud)
  • 为什么两者的位数不同?
  • 如何在不使用Chudnovsky算法的情况下将Pi的值增加到更多小数位?

Tim*_*Tim 13

为什么两者的位数不同?

一个是"计算" __str__,另一个是__repr__:

>>> print repr(math.pi)
3.141592653589793
>>> print str(math.pi)
3.14159265359
Run Code Online (Sandbox Code Playgroud)

print使用__str__对象的返回值来确定要打印的内容.只是做math.pi__repr__.

如何在不使用Chudnovsky算法的情况下将Pi的值增加到更多小数位?

您可以显示更多的数字有format()像这样

>>> print "pi is {:.20f}".format(math.pi)
pi is 3.14159265358979311600
Run Code Online (Sandbox Code Playgroud)

其中20是小数位数.更多信息在文档中

  • 另请注意,pi的此值仅精确到小数点后15位. (6认同)
  • 请注意,在48位小数后,如果您要求更多位置,Python将只打印零. (2认同)
  • @KshitijSaraogi:不能依赖浮点数来保存较低位的pi更准确的近似值,因此可能的下一步是使用Python的`Decimal`类来保存数字.这为您提供了任意的有限精度,但却以记忆和计算速度为代价.这实际上取决于您的进一步要求. (2认同)
  • @KshitijSaraogi:正如维基百科关于[双精度浮点格式](https://en.wikipedia.org/wiki/Double-precision_floating-point_format) 的文章中提到的,使用 _some_ 值可以获得 17 位十进制数字的精度,但是一般来说,您不应该依赖超过 15 位数字。 (2认同)