给定一组特定的“字符串”表示加法运算中的整数,如何知道javascript中的计算是否可行?例如。
2 + 2
(绝对可能)
20000000000000000 - 1
(不可能)
2e50 + 2e60
(不可能)
200000 + 5 + 40 + 300 + 2000 + 10000
(可能)
这同样适用于乘法,几个整数,是否适用?
2*2
(可能)
3*2e200
(可能)
4*-3e700
(不可能)
答案 0 :(得分:2)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
打开浏览器错误控制台并查看其功能。
"use strict";
var i,
numbers=[
2+2,
20000000000000000 - 1,
2e50 + 2e60,
200000 + 5 + 40 + 300 + 2000 + 10000,
2*2,
3*2e200,
4*-3e700
],
s=numbers.length;
for(i=0;i<s;i++){
console.log(
'The value of array index '+i+' is'+
((Number.isSafeInteger((numbers[i])))?'':' NOT')+
' Safe'
);
}
来自控制台的输出:
The value of array index 0 is Safe
The value of array index 1 is NOT Safe
The value of array index 2 is NOT Safe
The value of array index 3 is Safe
The value of array index 4 is Safe
The value of array index 5 is NOT Safe
The value of array index 6 is NOT Safe
这些数字中的一些可能是准确的,但无法进行比较以确定哪个数字更大