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

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

相关推荐
星释8 分钟前
鸿蒙智能体开发实战:39.鸿蒙壁纸大师 - 前端卡片显示与交互优化
前端·华为·交互·harmonyos·鸿蒙·火山引擎
顾昂_41 分钟前
内存泄漏排查和 Chrome DevTools 使用教程
前端·javascript·面试
IT_陈寒2 小时前
Java线程池这个坑我算是踩明白了
前端·人工智能·后端
An_s2 小时前
rust开发wasm与浏览器(js)交互
javascript·rust·wasm
山河木马2 小时前
GPU自动处理专题4-填充覆盖区域(光栅化)
javascript·webgl·计算机图形学
从零开始的代码生活_2 小时前
C++ 内存管理:从内存分区到 new/delete 底层原理
开发语言·c++·后端
悦儿遥遥雨12 小时前
PXE + Kickstart 无人值守批量部署系统
linux·javascript·nginx
31535669132 小时前
Superpowers:GPT-5.6 时代下的流程毒瘤
前端·后端
wabs6662 小时前
关于单调栈【力扣739.每日温度的思考】
java·开发语言
AOwhisky2 小时前
Python 学习笔记(第三期)——流程控制核心知识点自测与详解
开发语言·笔记·python·学习·云原生·运维开发·流程控制