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

相关推荐
CodeSheep4 分钟前
小米汽车这薪资是认真的吗?
前端·后端·程序员
白白李媛媛10 分钟前
上传Vue3+vite+Ts组件到npm官方库保姆级教程
前端·arcgis·npm
晴殇i18 分钟前
前端内容保护:如何有效防止用户复制页面内容?
前端·javascript·css
程序猿阿伟23 分钟前
《声音的变形记:Web Audio API的实时特效法则》
开发语言·前端·php
凌览26 分钟前
有了 25k Star 的MediaCrawler爬虫库加持,三分钟搞定某红书、某音等平台爬取!
前端·后端·python
万少28 分钟前
2-自然壁纸实战教程-AGC 新建项目
前端·harmonyos
满分观察网友z39 分钟前
别小看这个滑动条!从性能灾难到用户挚爱的 uni-app Slider 踩坑实录
前端
满分观察网友z42 分钟前
别再裸写<textarea>了!一个“小”功能,我用上了它几乎所有API
前端
bemyrunningdog43 分钟前
二进制权限控制方案
javascript·react.js·ecmascript
西西木科技丨Shopify开发机构1 小时前
如何在 Shopify 中建立重定向
前端·html