前端 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

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

相关推荐
nuIl5 分钟前
实现一个 Coding Agent(4):ReAct 循环
前端·agent·cursor
AAA大运重卡何师傅(专跑国道)5 分钟前
【无标题】
开发语言·c#
nuIl6 分钟前
实现一个 Coding Agent(1):一次 LLM 调用
前端·agent·cursor
nuIl6 分钟前
实现一个 Coding Agent(2):让 LLM 流式响应
前端·agent·cursor
copyer_xyf8 分钟前
Python 异常处理
前端·后端·python
sugar__salt15 分钟前
从栈队列数据结构到JS原型面向对象全解
前端·javascript·数据结构
XBodhi.24 分钟前
Visual Studio C++ 语法错误: 缺少“;”(在“return”的前面)
开发语言·c++·visual studio
MageGojo26 分钟前
随机文案模块怎么做?从接口封装到前端展示的完整实现思路
javascript·前端开发·api接口·后端开发·随机文案
独特的螺狮粉26 分钟前
篮球集训班器具管理系统 - 鸿蒙PC Electron框架完整技术实现指南
前端·javascript·华为·electron·前端框架·开源·鸿蒙
小妖66627 分钟前
js 生成随机数技巧 Math.random().toString(36)
javascript·随机数