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

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

相关推荐
XMYX-0几秒前
08 - Go 函数(中):匿名函数、闭包与函数式编程
开发语言·golang
飞Link2 分钟前
LangGraph SDK 全量技术手册:分布式 Agent 集群的远程调用与编排引擎
开发语言·分布式·python·数据挖掘
观无3 分钟前
html+nginx实现看板
前端·nginx·html
itzixiao4 分钟前
L1-041 寻找250(10分)
开发语言
bcbobo21cn7 分钟前
Web 3D 正方体贴图
前端·3d·贴图·mesh
njsgcs7 分钟前
获得solidworks 3d零件的包围框 长宽高 boundingbox c#
开发语言·c#·solidworks
网域小星球8 分钟前
C 语言从 0 入门(十九)|共用体与枚举:自定义类型进阶
c语言·开发语言·算法·枚举·自定义类型·共用体
灯光设计师8 分钟前
JavaScript判断受访域名,调用不同的js文件
javascript
聊聊MES那点事9 分钟前
报表控件Stimulsoft Reports.NET使用教程:发票报告设计
前端·javascript·html·报表工具
Evand J10 分钟前
【滤波代码介绍|MATLAB】粒子滤波(PF)与自适应粒子滤波(APF)在三维动态系统状态估计中的对比,使用Sage Husa自适应的思想
开发语言·matlab·pf·粒子滤波·apf·自适应滤波