decimal.js是JavaScript 中的任意精度十进制插件

decimal.js是JavaScript 中的任意精度十进制插件

decimal.js 是一个 JavaScript 库,用于处理任意精度的十进制数。它提供了一个强大而全面的 API,可用于执行各种数字计算,包括整数和浮点数。此库旨在解决 JavaScript 原生数值处理中的精度问题,并允许开发人员更精确地进行数字运算。

主要特点:

整数和浮点数:decimal.js 能够处理整数和浮点数,使您可以执行各种数字计算。

简单但功能全面的 API:库提供了一个简单而强大的 API,让您轻松执行各种数字操作。

复制了 JavaScript 的 Number.prototype 和 Math 对象的许多方法:您可以使用 decimal.js 中的方法来执行与 JavaScript 原生数字相似的操作。

处理十六进制、二进制和八进制值:decimal.js 还能够处理十六进制、二进制和八进制值。

无依赖性:这个库不依赖于其他任何库或框架。

广泛的平台兼容性:decimal.js 仅使用 JavaScript 1.5(ECMAScript 3)特性,因此在各种平台上都能够运行。

全面的文档和测试集:您可以轻松查找文档并使用测试集来验证库的功能。

用于 TypeScript 的声明文件:decimal.js 包括一个 TypeScript 声明文件,使 TypeScript 开发更加友好。

安装和使用:

要使用 decimal.js,您可以在浏览器中将 decimal.js 文件引入,或者在 Node.js 中使用 npm 进行安装。

浏览器中引入

<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/decimal.js"></script>

<script type="module">
import Decimal from '//repo.bfw.wiki/bfwrepo/js/decimal.mjs';

</script>

Node.js 中安装:

npm install decimal.js

import Decimal from "decimal.js" // 具体文件中引入

API 和用法:

decimal.js 提供一个构造函数 Decimal,它接受一个数字、字符串或 Decimal 实例作为参数,用于创建十进制数。

const x = new Decimal(123.4567);

const y = new Decimal('123456.7e-3');

const z = new Decimal(x);

如果您使用的数字具有较多位数,建议将其表示为字符串,以避免精度损失。

decimal.js 还支持使用下划线作为分隔符,以提高数字的可读性。

const bigNumber = new Decimal('2_147_483_647');

库还支持使用二进制、十六进制或八进制表示法。

const binaryNumber = new Decimal('0b10101100');
const hexNumber = new Decimal('0xff.f');

decimal.js 的方法能够链式调用,使得在一个表达式中执行多个操作成为可能。

x.dividedBy(y).plus(z).times(9).floor();

此外,decimal.js 还提供了短别名的方法,使代码更加简洁。

x.squareRoot().dividedBy(y).toPower(3).equals(x.sqrt().div(y).pow(3)); // true

decimal.js 复制了 JavaScript 的 Number.prototype 和 Math 对象的大多数方法,因此您可以执行各种常见的数字操作,例如四舍五入、指数计算等。

decimal.js 还支持检查 NaN 和 Infinity 等特殊值,并提供了 toFraction 方法,用于将数字表示为分数。

最重要的是,decimal.js 可以按照指定的有效数字和舍入模式进行计算,以解决 JavaScript 原生数值处理中的精度问题。

浮点数运算


let a = 1

let b = 6
// a 与 b 可以是 任何类型,Decimal 内部会自己处理兼容
// 下面两种都可以 可以带 new 也不可以不带 new
let res = new Decimal(a).add(new Decimal(b))
let res = Decimal(a).add(Decimal(b))


let a = "4"
let b = "8"
// a 与 b 可以是 任何类型,Decimal 内部会自己处理兼容
// 下面两种都可以 可以带 new 也不可以不带 new
let res = new Decimal(a).sub(new Decimal(b))
let res = Decimal(a).sub(Decimal(b))


let a = 1
let b = 6
// a 与 b 可以是 任何类型,Decimal 内部会自己处理兼容
// 下面两种都可以 可以带 new 也不可以不带 new
let res = new Decimal(a).mul(new Decimal(b))
let res = Decimal(a).mul(Decimal(b))

let a = 1
let b = 6
// a 与 b 可以是 任何类型,Decimal 内部会自己处理兼容
// 下面两种都可以 可以带 new 也不可以不带 new
let res = new Decimal(a).div(new Decimal(b))
let res = Decimal(a).div(Decimal(b))

开源地址:https://github.com/MikeMcl/decimal.js/

立即下载decimal.js查看所有js插件

网友评论0

程序员在线工具箱