javascript中是否有任何内置函数会通知数字数据类型的算术运算溢出? 就像c#和Java一样。
答案 0 :(得分:2)
与您所引用的语言不同,如果执行了无效的数学运算,则JavaScript不会引发。而是返回特殊数字值来通知您(对它们进行数学运算总是会再次产生该特定值,因此您只需在算术链的末尾检查它们即可):
NaN // Operation could not be done
Infinity // Number was too large
-Infinity // Number was too small
对于所有这三种特殊情况,您可以使用isFinite
进行检查:
// a = 1000, b = 1000, c = 1 -> Infinity
// a = -1000, b = 1001, c = 1 -> -Infinity
const a = 2, b = 51, c = 0; // divide by zero -> NaN
const result = a ** b / c;
if(!isFinite(result)) {
console.log("invalid operation");
}
还要注意,JavaScript数字是浮点数,其精确整数范围在(-2 ** 53,2 ** 53)之间,超出该整数的每个整数都会失去精度。这同样适用于任何永远都不准确的非整数算法。