此问题已在此处找到答案:
浮点数学坏了吗((30个答案)
3小时前关门了。
我用 math.pi
使用python:
import Decimal as dc
dc.getcontext().prec=100
pi = dc.Decimal(math.pi)
我得到:
3.141592653589793115997963468544185161590576171875
在互联网上,我得到:
3,141592653589793238462643383279502884197169399375
为什么python没有给出一个好的值?如何改善这种情况?
我试了试,也试了试 Decimal
.
1条答案
按热度按时间ao218c7q1#
如python数学模块的注解和文档所示,
math.pi
保存浮点值。浮点数在设计上是不准确的,因为有有限数量的位专用于保持精度。你可以阅读https://docs.python.org/3/tutorial/floatingpoint.html 了解float是如何表示的,以及在编程过程中这将如何影响您(使用所有语言,而不仅仅是python)。如何获得pi的准确值?正如tom karzes提到的,您可以使用
Decimal
模块,并根据需要为其提供任意多的数字。让我们从https://www.angio.net/pi/digits/pi1000000.txt,您的代码如下所示:pi_30_decimal_places = Decimal("3.141592653589793238462643383279")