Float是数字的近似值。
12345678901234567890 === 12345678901234567891
是true
,而
1234567890 === 1234567891
是false
num === num+1
的断点是什么?
我制作了这段代码以便找到它,但它只需要太长时间......
for(var i = 0;;){
var old = i;
if(++i === old) break;
}
console.log(i);
答案 0 :(得分:3)
断裂点为2 53 。
console.log(9007199254740992 === 9007199254740993);
# true
console.log(9007199254740991 === 9007199254740992);
# false
答案 1 :(得分:0)
答案 2 :(得分:0)
通过反复试验找到了突破点:9007199254740991,9007199254740992
var n = 1;
while (true) {
n *= 2;
if (n === n+1) {
break;
}
}
var a = Math.round(n/2);
var b = n;
while (a < b-1) {
var m = Math.round((a + b) / 2);
if (m === m+1) {
b = m;
} else {
a = m;
}
}
console.log(a);
console.log(b);