[Number]js中数字存储(0.1 + 0.2 !== 0.3)
2024-09-02 19:45:33
和其他编程语言(如 C 和 Java)不同,JavaScript 不区分整数值和浮点数值,
所有数字在 JavaScript 中均用浮点数值表示,遵循IEEE754标准,在进行数字运算的时候要特别注意。
即:在js中的数字都是64位的浮点数。浮点数不是精确的值。涉及到小数的计算需要特别注意。
IEEE 754
64位浮点数在js中的存储形式如下:
用数学形式(二进制的科学计数法)表示如下:
示例:
由上可知,可以存储的数据的小数点为52位,整个数据的有效数字长度为53位。即精度只有53个二进制位。
1. 整数
1)精度
2^(-53)~2^53之间的整数数字都可以精确表示。否则,存储的数据会失去精度。
简单来说,15位的十进制整数都可以精确表示。
2)数值范围
由存储形式可知,存储的数值大小主要有指数(Exp)决定。
数值范围2^(-1023)~2^(1024) 开区间
2. 小数
小数存储的时候需要特别注意,因为当小数转为二进制的时候,容易丢失精度。
最新文章
- ios iphone6 Plus 的适配问题
- winform学习-----理解小概念-20160517
- Sqoop2环境搭建
- Hibernate笔记——缓存机制详细分析
- 文件I/O(不带缓冲)之文件共享
- cocos2dx进阶学习之场景切换
- sql数据黑马程序员——SQL入门
- Android - DrawerLayout
- 面试题----寻找比一个N位数大的“下”一个数
- oracle伪列
- java自动拆装箱(转载)
- layui_表格数据查询按钮
- 动态规划面试题基础合集1--数学三角形,LIS , LCS, CSD
- JVM中类的卸载机制
- Windows 下安装 Python3
- bzoj 3730 震波——动态点分治+树状数组
- Linux上编译hadoop-2.7.1的libhdfs.so和libhdfs.a
- POJ3690 Constellations
- Java项目中使用Log4J
- 详解java中的TreeSet集合