Python计算错误

时间:2016-05-21 15:51:01

标签: python python-3.x

我正在尝试实施LCM查找算法。它需要为非常大的数字找到LCM。

使用公式

找到LCM
LCM(A, B) = (A * B) / GCD(A, B)

其中A和B是两个输入。

输入:226553150 1023473145
所以,LCM = (226553150 * 1023473145) / 5
它应该是46374212988031350

但是python发现这是46374212988031352,这显然是一个错误。 如何解决这个问题呢 ? python screenshot

1 个答案:

答案 0 :(得分:3)

您正在使用浮点数学,因为您使用了/真除法运算符。浮点只能近似大数,你看到的差异是由此造成的。

改为使用//分区:

>>> (226553150 * 1023473145) // 5
46374212988031350

对整数进行平面划分永远不需要转换为浮点数,从而避免了精度问题。

或者,使用the documentation获得更高精度的数学和实数:

>>> from decimal import Decimal
>>> Decimal('226553150') * Decimal('1023473145') / Decimal('5')
Decimal('46374212988031350')

这比使用float慢。

相关问题