数值安全

2017-03-27  本文已影响0人  轮回_1174

JavaScript能够准确表示的整数范围在-253到253之间(不含两个端点),超过这个范围,无法精确表示这个值。

Math.pow(2, 53) === Math.pow(2, 53) + 1

Number.isSafeInteger()则是用来判断一个整数是否落在这个范围之内。

Number.isSafeInteger(3) // true
Number.isSafeInteger(1.2) // false

验证运算结果是精确,不要只验证结果,要对每个操作数进行验证

Number.isSafeInteger(9007199254740993)
// false
Number.isSafeInteger(990)
// true
Number.isSafeInteger(9007199254740993 - 990)
// true
9007199254740993 - 990
// 返回结果 9007199254740002
// 正确答案应该是 9007199254740003
上一篇 下一篇

猜你喜欢

热点阅读