前端 JS 经典:小数运算不精确

**原因:**计算机对小数的存储是二进制的,有限位数的二进制做算法得到的是有限位数,无限位数的二进制做运算,得到的是无限位数。

如下:0.5 和 0.25 转二进制是有限位数,0.3 和 0.2 转二进制是无限位数。

javascript 复制代码
(0.5).toString(2); // 0.1

(0.25).toString(2); // 0.01

0.5 - 0.25; // 0.1 - 0.01 = 0.01



(0.3).toString(2); // '0.010011001100110011001100110011001100110011001100110011'

(0.2).toString(2); // '0.001100110011001100110011001100110011001100110011001101'

0.3 - 0.2; // 0.00891089108910891

**解决:**转字符串,然后不同位置做算法。

相关推荐
竹林8189 小时前
用 wagmi v2 + viem 监听链上事件,我踩了三天坑终于搞懂了实时日志与历史补全
javascript
Momo__9 小时前
VueUse createReusableTemplate —— 单文件组件内的模板复用神器
前端·vue.js
只一9 小时前
😭从回调地狱到 async/await:一文打通 Ajax 与 JS 异步编程
javascript
程序员小富9 小时前
我开源了一个开发者专属的智能 JSON 工具,得到了媳妇高度认可
前端·vue.js·后端
小小小小宇9 小时前
程序员如何给 LLM 装工具以及看懂推理过程
前端
写代码的皮筏艇9 小时前
React中的forwardRef
前端·react.js·面试
槑有老呆9 小时前
花三个月工资请了个 AI 程序员,结果它连青岛啤酒股价都查不了
前端
风骏时光牛马9 小时前
Verilog开发常见问题汇总解析
前端
子兮曰9 小时前
AI Coding Method Map:一张图看懂 AI 编程的完整链路
前端·人工智能·后端