首页 > 解决方案 > 如何更改python中的数值精度?

问题描述

如果我在 python 中写 1e-15,python 可以将该数字与 0 区分开来,但如果我写 1e-16,python 无法将该数字与 0 区分开来。所以 python 精确到第 16 位。有没有办法将此精度降低到例如 10 位?如何?我可以用一些计算吗

谢谢你的帮助。

标签: pythonprecision

解决方案


如果您想在计算中进行精确的算术运算,强烈建议不要使用默认float类型。请参阅官方文档的浮点运算:问题和限制部分。

这就是为什么使用十进制模块会更好。它有几种控制精度的方法。

在这里,我们全局更改精度:

>>> from decimal import *
>>> getcontext().prec = 6
>>> Decimal(1) / Decimal(7)
Decimal('0.142857')
>>> getcontext().prec = 28
>>> Decimal(1) / Decimal(7)
Decimal('0.1428571428571428571428571429')

在这里,我们为单个数字执行此操作:

>> Decimal('0.1428571428571428571428571429').quantize('0.01')
Decimal('0.14')

您可以在文档中找到更多示例。


推荐阅读