笔记-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 中原生浮点数运算的误差。它适用于需要精确控制小数点精度的场景,尤其在金融、科学计算等领域非常有用。

相关推荐
mldong3 小时前
你的 Vue3 项目也能有钉钉同款审批流设计器:npm 装包,10 分钟画出第一条审批流
前端·vue.js
2分钟速写快排4 小时前
什么是 RAG?如何用 RAG 实现一个用户记忆?
前端·后端·ai编程
passerby60614 小时前
如何自己造一个时间处理库
前端·javascript·github
走到天涯海角5 小时前
react里面的长列表渲染优化
前端·react.js·前端框架
小羊没烦恼!5 小时前
Hello Web API系列教程——Web API与国际化
java·服务器·前端·javascript·php
北岛贰6 小时前
迷茫焦虑期,我做了一个带支付带官网的 AI 聊天虚拟恋人 App
前端·人工智能·后端
mayaairi7 小时前
Vue2 组件通讯(三):全局事件总线、PubSub、插槽与组件实例属性
前端·javascript·vue.js
kyriewen8 小时前
面试官问我:AI 都能写代码了,前端凭什么还值 25K
前端·javascript·人工智能
风骏时光牛马8 小时前
AI源码分析:拆解模型底层实现逻辑
前端
BillKu9 小时前
全局样式变量:CSS 自定义属性(--border-color)和SCSS 变量($border-color)的说明
javascript·css·scss