当前位置:首页 > JavaScript

js实现小数相加

2026-02-02 13:43:41JavaScript

解决 JavaScript 小数相加精度问题的方法

JavaScript 中小数相加可能出现精度问题,例如 0.1 + 0.2 结果为 0.30000000000000004。以下是几种解决方法:

方法一:使用 toFixed 方法

将结果固定到指定位数的小数,但返回的是字符串类型。可以再转换为数字:

const result = (0.1 + 0.2).toFixed(2); // "0.30"
const numResult = parseFloat(result); // 0.3

方法二:乘以 10 的 N 次方转为整数运算

将小数转为整数进行运算,再转回小数:

function addDecimals(a, b) {
  const multiplier = Math.pow(10, Math.max(getDecimalLength(a), getDecimalLength(b)));
  return (a * multiplier + b * multiplier) / multiplier;
}

function getDecimalLength(num) {
  const decimalStr = num.toString().split('.')[1];
  return decimalStr ? decimalStr.length : 0;
}

addDecimals(0.1, 0.2); // 0.3

方法三:使用第三方库

对于复杂的数学运算,推荐使用现成的库如 decimal.jsbig.js

// 使用 decimal.js
import Decimal from 'decimal.js';
const sum = new Decimal(0.1).plus(0.2).toNumber(); // 0.3

方法四:自定义精度处理函数

通过四舍五入处理精度问题:

js实现小数相加

function preciseAdd(a, b, precision = 10) {
  const factor = Math.pow(10, precision);
  return Math.round((a + b) * factor) / factor;
}

preciseAdd(0.1, 0.2); // 0.3

注意事项

  • toFixed 可能会进行四舍五入,例如 (0.105).toFixed(2) 会得到 "0.11"
  • 整数运算方法在处理极大或极小数时可能溢出。
  • 第三方库提供了更全面的精度控制,适合金融等场景。

标签: 小数js
分享给朋友:

相关文章

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 const…

js实现菜单

js实现菜单

实现基本HTML结构 使用HTML创建菜单的基本框架,通常包含<ul>和<li>元素。示例结构如下: <ul id="menu"> <li><…

js 实现页面刷新

js 实现页面刷新

使用 location.reload() location.reload() 是原生 JavaScript 提供的页面刷新方法。调用该方法会重新加载当前页面,相当于点击浏览器的刷新按钮。 // 基本…