是否可以确定特定的算术运算是否导致溢出

时间:2015-10-13 04:26:58

标签: javascript math

我觉得这可能是不可能的,但如果任何人有任何想法,那将会有很大的帮助。 对于任何浮点算术运算,是否可以确定该操作导致精度损失。例如,如果我计算z = x / y,我想确定z是否具有精确值,或者是否在操作期间丢失了一些精度。

为什么我需要这个: 我正在使用区间运算进行一些数学运算。如果结果不准确,我需要返回一个范围,其中确切的结果以[a,b]的形式出现。目前,对于每一项操作,我都假设精确损失。如果结果是x,则返回[previousClosestFPNumber(x),nextClosestFPNumber(x)]。这完美无瑕。然而,对于非常复杂的方程,范围变得太大。如果我可以确定精度已经丢失,那么在这种情况下我只能扩大范围。

1 个答案:

答案 0 :(得分:3)

如果你在操作tableView:heightForRowAtIndexPath:中失去精确度,那么应该通过对结果应用逆操作来检测它是否可以检测到你是否得到了原始值之外的其他东西:用数学的说法, f(x)

例如:

f'(f(x)) != x

如果结果不合适,您可能需要考虑一个bignum库,其中没有失去精确度,例如javascript-bignum(尽管我是'我相信周围也会有其他人。)