Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以确定特定的算术运算是否导致溢出_Javascript_Math - Fatal编程技术网

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

Javascript 是否可以确定特定的算术运算是否导致溢出,javascript,math,Javascript,Math,我有一种感觉,这可能是不可能的,但如果任何人有任何想法,这将是非常有帮助的。 对于任何浮点算术运算,都可以确定该运算导致精度损失。e、 g如果我计算z=x/y,我想确定z是否具有精确值,或者在操作过程中是否丢失了一些精度 我为什么需要这个: 我正在用区间算术做一些数学运算。如果结果不精确,我需要返回一个精确结果为[a,b]形式的范围。目前,对于每一次操作,我都假设精度损失。如果结果是x,则返回[previousClosestFPNumber(x),nextClosestFPNumber(x)]。

我有一种感觉,这可能是不可能的,但如果任何人有任何想法,这将是非常有帮助的。 对于任何浮点算术运算,都可以确定该运算导致精度损失。e、 g如果我计算z=x/y,我想确定z是否具有精确值,或者在操作过程中是否丢失了一些精度

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

如果在运算
f(x)
中丢失精度,那么应该通过对结果应用逆运算并查看是否返回原始值以外的值来检测:用数学术语来说,
f'(f(x))!=x

例如,类似于:

x = y * z
y2 = x / z
if y != y2: precision was lost


如果这不适合,你可能想考虑一个不丢失精度的Bigunm库,比如(虽然我肯定也会有其他的)。例如:

c=a/b
可以使用
c*b==a
+1酷把戏进行检查。。然而,它是确定性的吗?有没有可能f(x)失去了精度,但f'(f(x))仍然返回x。@Rahul:是的,两个错误可以变成一个正确,有时检查会失败,但操作不会。这取决于操作,但通常情况下,如果有任何损失,检查中的精度将使情况变得更糟,从而可检测到。例如:
var a=1.01,b=1.1,c=a+b;c-b谢谢!不幸的是,结果总是在范围内。如果我得到假阴性,我就完蛋了。假阳性仍然可以。你还有什么秘密吗?@Rahul,我还有很多秘密。不幸的是,它们都与如何说服超级模特与我约会有关,而不是检测不精确的结果:-)你必须更具体地了解操作。