zhaoolee / ChromeAppHeroes

🌈谷粒-Chrome插件英雄榜, 为优秀的Chrome插件写一本中文说明书, 让Chrome插件英雄们造福人类~ ChromePluginHeroes, Write a Chinese manual for the excellent Chrome plugin, let the Chrome plugin heroes benefit the human~ 公众号「0加1」同步更新
https://zhaoolee.com/ChromeAppHeroes/
GNU General Public License v3.0
21.78k stars 2.27k forks source link

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

Closed YFengFly closed 5 years ago

YFengFly commented 5 years ago

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

zhaoolee commented 5 years ago

整数最大安全值为: 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

YFengFly commented 5 years ago

整数最大安全值为: 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.计算数字不能太大