zhaoolee/ChromeAppHeroes

console可以当作计算器?吓得我一屁股坐在凳子上....

YFengFly opened this issue · 2 comments

因为Chrome的Console用的是Javascript,然而遵循IEEE 754做进制转换,算小数的时候可能会中招....
比如,0.1 + 0.2 ,0.1+0.7.......
emmm...算不是太大的整数还是妥妥的,但如果你要计算12345678901234567这么大的数也会有意外惊喜....

整数最大安全值为: 9007199254740991 (2的52次方 减一)

// 打印Number最大安全值
console.log("整数最大安全值", Number.MAX_SAFE_INTEGER);
 
// 超过最大安全值会怎样?
// 最大安全值加1的结果
console.log("整数最大安全值加1:", Number.MAX_SAFE_INTEGER+1);
// 最大安全值加2的结果
console.log("整数最大安全值加2:", Number.MAX_SAFE_INTEGER+2);
// 最大安全值加3的结果
console.log("整数最大安全值加3:", Number.MAX_SAFE_INTEGER+3);
// 最大安全值加4的结果
console.log("整数最大安全值加4:", Number.MAX_SAFE_INTEGER+4);
// 最大安全值加5的结果
console.log("整数最大安全值加5:", Number.MAX_SAFE_INTEGER+5);

越界则会产生误差:
image

整数最大安全值为: 9007199254740991 (2的52次方 减一)

// 打印Number最大安全值
console.log("整数最大安全值", Number.MAX_SAFE_INTEGER);
 
// 超过最大安全值会怎样?
// 最大安全值加1的结果
console.log("整数最大安全值加1:", Number.MAX_SAFE_INTEGER+1);
// 最大安全值加2的结果
console.log("整数最大安全值加2:", Number.MAX_SAFE_INTEGER+2);
// 最大安全值加3的结果
console.log("整数最大安全值加3:", Number.MAX_SAFE_INTEGER+3);
// 最大安全值加4的结果
console.log("整数最大安全值加4:", Number.MAX_SAFE_INTEGER+4);
// 最大安全值加5的结果
console.log("整数最大安全值加5:", Number.MAX_SAFE_INTEGER+5);

越界则会产生误差:
image

抱歉,我描述的不太清楚。用js做计算会有这两个问题:
1.数值不能过大,这一点您上面说明了,对应MDN:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
2.另一个问题是浮点计算,就比如我说道的 0.1 + 0.2,还有 0.3 / 0.1 等各种情况。
所以,文章应该特别说明一些限制:
1.只进行整数计算
2.计算数字不能太大