笔记-Big.js的使用

big.js 是一个用于处理高精度小数计算的 JavaScript 库,避免了 JavaScript 中原生浮点数运算的精度问题。big.js 支持任意精度的小数运算,适用于金融、科学计算等需要高精度的场合。

安装 big.js

你可以通过 npm 或直接在 HTML 文件中引入 big.js

  1. 使用 npm 安装:

    bash 复制代码
    npm install big.js
  2. 使用 CDN 引入(在浏览器环境中):

    html 复制代码
    <script src="https://cdn.jsdelivr.net/npm/big.js@6.2.0/big.min.js"></script>

基本用法

1. 创建 Big 对象

你可以通过 new Big() 或者直接使用 Big() 来创建一个高精度数字对象。

javascript 复制代码
const Big = require('big.js'); // Node.js 环境

// 创建 Big 对象
const num1 = new Big(123.456);
const num2 = Big('78.90'); // 传入字符串形式的数字,避免精度丢失

2. 常见操作

big.js 提供了常见的数学运算方法,比如加法、减法、乘法、除法等。

javascript 复制代码
const a = new Big(10);
const b = new Big(3);

console.log(a.plus(b).toString()); // 加法:10 + 3 = 13
console.log(a.minus(b).toString()); // 减法:10 - 3 = 7
console.log(a.times(b).toString()); // 乘法:10 * 3 = 30
console.log(a.div(b).toString()); // 除法:10 / 3 ≈ 3.3333333333333335

// 限制小数位数,四舍五入
const result = a.div(b).toFixed(2); // 限制到两位小数
console.log(result); // 输出 "3.33"

3. 精度控制

big.js 默认采用四舍五入的方法处理精度,toFixed()toPrecision() 方法可以控制精度。

javascript 复制代码
const value = new Big(1.23456789);

console.log(value.toFixed(3)); // 保留3位小数: "1.235"
console.log(value.toPrecision(4)); // 保留4位有效数字: "1.235"

4. 常用方法

  • plus(): 加法
  • minus(): 减法
  • times(): 乘法
  • div(): 除法
  • mod(): 取模(余数)
  • abs(): 绝对值
  • sqrt(): 平方根
  • pow(): 幂运算
  • toFixed(): 四舍五入,控制小数位数
  • toPrecision(): 设置有效数字

5. 比较操作

你可以使用 gt(), lt(), eq() 等方法来进行比较。

javascript 复制代码
const a = new Big(10);
const b = new Big(20);

console.log(a.gt(b)); // false,a > b
console.log(a.lt(b)); // true,a < b
console.log(a.eq(b)); // false,a = b

6. 处理字符串

big.js 支持将数字转换为字符串进行处理,避免了常见的浮点数精度问题。

javascript 复制代码
const num = new Big(0.1);
const result = num.plus(0.2); // 0.1 + 0.2
console.log(result.toString()); // 输出 "0.3",精度不会丢失

7. 错误处理

big.js 会在无效的操作时抛出错误,例如除数为零的情况。

javascript 复制代码
const a = new Big(10);
const b = new Big(0);

try {
  console.log(a.div(b)); // 会抛出错误:Division by zero
} catch (error) {
  console.log(error.message); // 输出 "Division by zero"
}

代码示例

javascript 复制代码
const Big = require('big.js'); // 引入 big.js 库

// 示例:银行存款利率计算
const principal = new Big(1000);  // 本金
const rate = new Big(0.05); // 利率(5%)
const years = new Big(10); // 10年

// 计算复利
const amount = principal.times(rate.plus(1).pow(years)); 
console.log('Total amount after 10 years:', amount.toString()); // 复利后的总金额

总结

big.js 提供了高精度的数值运算方法,避免了 JavaScript 中原生浮点数运算的误差。它适用于需要精确控制小数点精度的场景,尤其在金融、科学计算等领域非常有用。

相关推荐
慧一居士21 分钟前
flex 布局完整功能介绍和示例演示
前端
DoraBigHead23 分钟前
小哆啦解题记——两数失踪事件
前端·算法·面试
一斤代码6 小时前
vue3 下载图片(标签内容可转图)
前端·javascript·vue
中微子6 小时前
React Router 源码深度剖析解决面试中的深层次问题
前端·react.js
光影少年6 小时前
从前端转go开发的学习路线
前端·学习·golang
中微子6 小时前
React Router 面试指南:从基础到实战
前端·react.js·前端框架
3Katrina6 小时前
深入理解 useLayoutEffect:解决 UI "闪烁"问题的利器
前端·javascript·面试
前端_学习之路7 小时前
React--Fiber 架构
前端·react.js·架构
coderlin_7 小时前
BI布局拖拽 (1) 深入react-gird-layout源码
android·javascript·react.js
伍哥的传说8 小时前
React 实现五子棋人机对战小游戏
前端·javascript·react.js·前端框架·node.js·ecmascript·js