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

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

相关推荐
鹿角片ljp8 小时前
Java面试复盘(二):String不可变、字符串常量池与字符串拼接
开发语言·python
木叶丸9 小时前
从 Loop 到 Graph:AI 智能体协作系统工程指南
前端·后端·架构
小秋求学记.9 小时前
PHP安全漏洞实战:从环境配置到RCE攻击
开发语言·php
看浪的路人10 小时前
第3讲:代码补全引擎
开发语言·windows·python
小小龙学IT10 小时前
Day 26-27 项目实战:从零构建一个高并发聊天室(epoll + 线程池)
linux·服务器·c语言·开发语言·网络
吴懿不在 不负信仰10 小时前
从jQuery谈库与框架的设计之优劣
前端·javascript·jquery
灵析表格10 小时前
灵析表格手机号处理函数深度分析报告
前端·网络·json·wps·灵析表格·excel公式盒子
我就是妖怪10 小时前
【无标题】
开发语言
智海深蓝10 小时前
智慧渔业海上养殖数字孪生实践方向与难点拆解分析
java·前端·网络
DsirNg10 小时前
用原生 HTML5 视频与 Canvas 实现浏览器端视频抽帧封面
javascript·canvas·视频抽帧·前端实战·html5 video·浏览器 api