美文网首页
[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数值精度

    整数和浮点数 JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是...

  • [js]数值的精度

    基础知识 js内部所有数字在计算机内存中的表示都是64位双精度浮点数 双精度浮点数表示法的副作用 使用二进制浮点数...

  • JS数值

    JS数值 一、JS内部的数值形式和精度 在JS内部,所有的数值都是以64位的浮点数的形式存在的。即使是整数也是如此...

  • JS精度和大数处理

    JS精度和大数处理 1. 引子 众所周知 JavaScript 仅有 Number 这个数值类型,而 Number...

  • mysql8 数据类型 float double decimal

    float数值类型用于表示单精度浮点数值,而double数值类型用于表示双精度浮点数值,float和double都...

  • JAVA/JS 精度丢失问题

    在JAVA和JS浮点型数值直接计算中,经常会出现一些精度丢失的情况。 JAVA和JS采用的是IEEE 754规范,...

  • 雷潮教育第一期班C#课程阶段总结(1)

    1.基本数据类型 数值类型整型 int单精度浮点型 float双精度浮点型 double更高精度数值(财务) de...

  • 《Java编程思想》笔记——基础知识

    1.基本类型 高精度数值类型: BigInteger和BigDecimal是java中的高精度数值类型,由于它们是...

  • js中的数字

    Number对象 可表示的最大的数 Math对象 js中的最大整数 安全整数 当整数数值过大时,就会发生精度丢失 ...

  • 修复Long类型太长,而Java序列化JSON丢失精度问题的方法

    Java序列化JSON时long型数值,会出现精度丢失的问题。原因:java中得long能表示的范围比js中num...

网友评论

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

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