除法时找到准确的值

Finding accurate values while dividing

在 Python 中,除以较大的值时我得到的输出不准确,例如:-

(1227073724601519345/101) = 12149244798034845。但是在Python中变成了

(1227073724601519345/101) = 1.2149244798034844e+16 转换成int是12149244798034844.

如你所见

( correct_output - approx_output ) = 1

有什么办法可以避免这种情况吗?乘以更大的数字时没有这种不准确,例如:-

(123468274768408415066917747313280346049^2) - (56 * (16499142225694642619627981620326144780^2)) = 1

这是准确的。

使用整数除法,例如 1227073724601519345 // 101。

计算机通常使用 IEEE 754 浮点运算标准。这意味着浮点数的精度有限为 53 位(大约 15 或 16 位十进制数字)。

因为你已经使用 (x / y) Python 给了你一个浮点数结果,并且结果需要超过 15 个小数位所以不准确。

但是Python也有整数除法运算符(//)。 Python 3 中的整数是多精度数,这意味着它们可以表示任意大整数(仅受可用内存限制...)。这就是为什么在乘以大数时得到准确结果的原因。所以要得到精确的整数结果,你应该使用这个:

1227073724601519345//101

这符合预期 12149244798034845