Python,浮点数有多长小数点?

时间:2018-05-14 10:49:42

标签: python python-2.7

我做了一个pi计算器。但它只是纠正前7个小数点并开始返回相同的结果。从外观上看,我的浮动值越来越大,因为我使用了限制。但是python中的十进制数是否有限制?我读了一些文件,但有数字甚至有100个小数点,但我可以达到11。

我的代码:

backgroundView

可能会有所帮助:在IDLE上运行。计算由巴塞尔问题完成。总是陷入3.14159264498。也永远不会超过11小数点,但有时会降低。应该说我的极限(sqrtt)达到10的10次幂(可能更低但高于10的7次方) 感谢。

3 个答案:

答案 0 :(得分:1)

使用典型的python实现,浮点数为64位,精度为53位。那是15到17位有效十进制数字。

https://en.wikipedia.org/wiki/Double-precision_floating-point_format

答案 1 :(得分:1)

Python使用64位浮点数,其精度为15 to 17 decimal digits

可以找到证明here,我们可以看到python float值存储为C double(几乎总是64位浮点数)。

typedef struct {
    PyObject_HEAD
    double ob_fval;  // this is the actual float value
} PyFloatObject;

您可以使用decimal.Decimal对象获得无限精度。

计算e

的示例
import decimal
import math

decimal.getcontext().prec = 100  # set the precision, can be as large as you like

e = decimal.Decimal(0)
next_e = decimal.Decimal('NaN')  # init as not a number
i = 0

while e != next_e:
    e, next_e = next_e, e + decimal.Decimal(1) / math.factorial(i)
    i += 1


e #--> Decimal('2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166428')

答案 2 :(得分:0)

本教程也非常有用。 Floating Point Arithmetic: Issues and Limitations

python浮点数的精度接近17位数。 “在运行Python的典型机器上,Python浮点数有53位可用精度”。它不仅是蟒蛇,它还是一个标准。所以熟悉它是有用的。