美文网首页
[js]数值的精度

[js]数值的精度

作者: 清水芦苇 | 来源:发表于2017-08-23 09:25 被阅读106次

    基础知识

    js内部所有数字在计算机内存中的表示都是64位双精度浮点数

    双精度浮点数表示法的副作用

    使用二进制浮点数(使用IEEE 754的所有语言)的最著名副作用是:

    0.1 + 0.2 === 0.3; // false
    

    js最大安全整数的概念

    Number.MAX_SAFE_INTEGER // 9007199254740991
    

    这个数字形成的原因是,Javascript 使用 IEEE 754 中规定的双精度浮点数。所谓安全是指在这个范围内的整数,js可以精确地进行表示并精确地进行比较运算,否则就会输出错误的值。

    国际标准 IEEE 754 规定,有效数字第一位默认总是1,不保存在64位浮点数之中。也就是说,有效数字总是1.xxxx的形式,其中xxxx的部分(称为尾数或有效数字,负责数字的精度)保存在64位浮点数(见fraction部分,共52位),最长可能为52位。因此(算上第一位不显示的位)JavaScript 提供的有效数字最长为53个二进制位。

    64位双精度浮点数示意图64位双精度浮点数示意图

    精度最多只能到53个二进制位,这意味着,绝对值小于2的53次方的整数,即-(253-1)到253-1,都可以精确表示。

    参考

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
    http://javascript.ruanyifeng.com/grammar/number.html#toc1

    相关文章

      网友评论

          本文标题:[js]数值的精度

          本文链接:https://www.haomeiwen.com/subject/nwxmattx.html