我现在正在学习Python的基础知识,我认为,作为一种学习练习,我会尝试写一些与“e”数字相近的东西。无论如何,它总是给出11个小数位的答案,我希望它给出更像1000个小数位的东西。我该怎么做?
答案 0 :(得分:3)
你确定你需要让它们“更精确”吗?或者你只需要看到比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
我向你保证,48位后pi不会变为零: - )
答案 1 :(得分:1)
如果你想要它是一个数字,精度为千位数,简短的答案是你不能..
解决方法是,您可以使用decimal模块。这是一个例子:
import decimal
a = decimal.Decimal('2387324895172987120570935712093570921579217509185712093')
然而,在这种情况下,a不再是数字。它只是decimal.Decimal
类的一个实例。好吧,你仍然可以用它做一些数学运算。
答案 2 :(得分:0)
目前几乎所有机器都使用IEEE-754浮点运算,几乎所有平台都将Python浮点数映射到IEEE-754“双精度”。
IEEE-754双精度为64位(8字节),分数有效数的52位出现在存储器格式中,总精度约为16位十进制数。
因此,要表示浮点数具有更高的精确度,您应该使用Decimal。
import decimal
decimal.getcontext().prec = 100