目前我只是在学习Python的基础知识,我想作为一个学习练习,我应该试着写一些近似数字"e“的东西。不管怎样,它总是给出11位小数的答案,我希望它能给出更多的小数点后1000位。我该怎么做呢?
发布于 2013-10-23 14:57:07
你确定你需要让它们“更精确”吗?或者你只需要看到比Python默认显示更多的数字?
>>> import math
>>> math.pi
3.141592653589793
>>>
>>> '{0:0.2f}'.format(math.pi)
'3.14'
>>>
>>> '{0:0.30f}'.format(math.pi)
'3.141592653589793115997963468544'
>>>
>>> '{0:0.60f}'.format(math.pi)
'3.141592653589793115997963468544185161590576171875000000000000'但是,请注意
浮点数通常在C中使用double实现;在
sys.float_info中提供了有关运行程序的计算机的浮点数的精度和内部表示形式的信息
我向您保证,pi不会在48位数字后变为零:-)
发布于 2013-10-23 15:02:59
如果您希望它是一个精确到一千位的数字,简短的答案是您不能..
一种解决方法是,您可以使用decimal模块。下面是一个示例:
import decimal
a = decimal.Decimal('2387324895172987120570935712093570921579217509185712093')然而,在本例中,a不再是一个数字。它只是decimal.Decimal类的一个实例。嗯,你仍然可以用它做一些数学运算。
发布于 2013-10-23 15:07:18
现在几乎所有的机器都使用IEEE-754浮点算术,并且几乎所有的平台都将Python浮点数映射到IEEE-754的“双精度”。
IEEE-754双精度表具有64位(8字节),小数有效数的52位以存储器格式出现,总精度约为16位十进制数字。
因此,要表示一个比这个精度更高的浮点数,你应该使用Decimal。
import decimal
decimal.getcontext().prec = 100https://stackoverflow.com/questions/19534743
复制相似问题