3

我现在只是在学习 Python 的基础知识,我想,作为一个学习练习,我会尝试写一些近似数字“e”的东西。无论如何,它总是给出 11 位小数的答案,我希望它给出更像 1000 位小数的答案。我该怎么做?

4

3 回答 3

4

你确定你需要让它们“更精确”吗?或者你只需​​要看到比 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-23T06:57:06.720 回答
1

如果你希望它是一个数字,精度为一千位数,简短的回答是你不能......

一种解决方法是,您可以使用十进制模块。这是一个例子:

import decimal
a = decimal.Decimal('2387324895172987120570935712093570921579217509185712093')

但是,在这种情况下,a 不再是数字。它只是decimal.Decimal类的一个实例。好吧,你仍然可以用它做一些数学运算。

于 2013-10-23T07:02:58.797 回答
1

今天几乎所有机器都使用 IEEE-754 浮点运算,几乎所有平台都将 Python 浮点数映射到 IEEE-754 “双精度”。

IEEE-754 double 有 64 位(8 字节),小数有效数的 52 位出现在内存格式中,总精度约为 16 位十进制数字。

因此,要表示浮点数的精度更高,您应该使用Decimal

import decimal
decimal.getcontext().prec = 100
于 2013-10-23T07:07:18.493 回答