前端面试题 | js存储精度

42 阅读1分钟

问题

**0.1+0.2!=0.3的原因是什么**

解析

JavaScript对于小数数据使用双精度存储,10进制的小数转为二进制时候会损失一部分精度,因此再进行运算的话结果会不准确。10进制的小数转二进制的方法是按位乘2并保留整数部分,由于双精度是按53存储,如果超过这个长度会四舍五入。浮点数值计算会产生误差是基于IEEE754数值的浮点计算的通病,ECMAScript并非独此一家。

例如:(摘自王道计算机组成原理)

1679042381686.png