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

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

相关推荐
阿蒙Amon3 分钟前
C#每日面试题-重写和重载的区别
开发语言·c#
用户47949283569156 分钟前
React Hooks 的“天条”:为啥绝对不能写在 if 语句里?
前端·react.js
是一个Bug6 分钟前
Java基础20道经典面试题(二)
java·开发语言
Z_Easen10 分钟前
Spring 之元编程
java·开发语言
liliangcsdn16 分钟前
python下载并转存http文件链接的示例
开发语言·python
我命由我1234524 分钟前
SVG - SVG 引入(SVG 概述、SVG 基本使用、SVG 使用 CSS、SVG 使用 JavaScript、SVG 实例实操)
开发语言·前端·javascript·css·学习·ecmascript·学习方法
阿蒙Amon26 分钟前
C#每日面试题-委托和事件的区别
java·开发语言·c#
用户47949283569151 小时前
给客户做私有化部署,我是如何优雅搞定 NPM 依赖管理的?
前端·后端·程序员
资生算法程序员_畅想家_剑魔1 小时前
Java常见技术分享-12-多线程安全-锁机制
java·开发语言
C_心欲无痕1 小时前
vue3 - markRaw标记为非响应式对象
前端·javascript·vue.js