python小数的准确性

时间:2017-10-01 06:04:56

标签: python-3.x

如何使Python中的小数更准确,以便我可以计算到

0.0000000000001 * 0.0000000000000000001 = ?

我需要添加小数,如0.0000000145和0.00000000000000012314,并将它们相乘并得到确切的结果。是否有需要的代码,或者是否有模块?提前谢谢。

我需要比decimal.Decimal更精确的东西。

2 个答案:

答案 0 :(得分:1)

不确定你为什么会被投票。

decimal.Decimal表示在基数10中使用浮点数的数字。由于它不是直接在硬件中实现,因此可以控制精度级别(默认为28位):

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

但是,您可能更喜欢使用mpmath module,它支持任意精度的实数和复数浮点计算:

>>> from mpmath import mp
>>> mp.dps = 50
>>> print(mp.quad(lambda x: mp.exp(-x**2), [-mp.inf, mp.inf]) ** 2)
3.1415926535897932384626433832795028841971693993751

答案 1 :(得分:0)

也许做点什么

format(0.0000000000001 * 0.0000000000000000001,'.40f')

可以更改'.40f'以获得更高的准确性! 例如:'.70f'或类似的东西。

这里70表示我想要70位精确度。