javascript算法中的溢出
我在读一本书,遇到了这个问题 JavaScript中的算术在溢出时不会产生错误, 下溢,或被零除。当数值运算的结果 大于最大可表示数(溢出),则 是一个特殊的无穷大值,无穷大。同样,当绝对 负值的值大于的绝对值 最大可表示负数,结果为负数 无限,-无限javascript算法中的溢出,javascript,math,absolute-value,Javascript,Math,Absolute Value,我在读一本书,遇到了这个问题 JavaScript中的算术在溢出时不会产生错误, 下溢,或被零除。当数值运算的结果 大于最大可表示数(溢出),则 是一个特殊的无穷大值,无穷大。同样,当绝对 负值的值大于的绝对值 最大可表示负数,结果为负数 无限,-无限 负数的绝对值的结果怎么可能导致负数呢?它不是这么说的。如果-10是最大的可表示负数,x是11,那么结果是-infinity,这背后是否有合理的原因?我还注意到>>Math.pow(-3,99)/-1.7179250697045e+47。因此-3乘
负数的绝对值的结果怎么可能导致负数呢?它不是这么说的。如果-10是最大的可表示负数,x是11,那么结果是
-infinity
,这背后是否有合理的原因?我还注意到>>Math.pow(-3,99)/-1.7179250697045e+47。因此-3乘以99的幂得到了一个可表示的负数(当使用Math.abs()时,它应该被转换为它的绝对值,这就是实际发生的情况,即…,>>Math.abs(Math.pow(-3,99))//1.7179250691067045e+47,但是>>Math.pow(-3999)//-Infinity,这里-3的999次幂是一个溢出/绕过了最大的可表示数,所以当我得到这个数的绝对值时,应该得到-Infinity,但它不>>Math.abs(Math.pow(-3999))//Infinity@polendina绝对数永远不会是负数。Math.abs(-无穷大)===无穷
@polendina对我来说,如果用无穷表示溢出,那么下溢将是-无穷一个绝对数永远不会是负数,这是我困惑的原因,正如你解释的,作者的意思是如果| x |>最大可表示负数|=>-无穷