首页 > 编程语言 >JavaScript的数学计算库:decimal.js

JavaScript的数学计算库:decimal.js

时间:2023-06-19 15:45:28浏览次数:48  
标签:数字 decimal JavaScript js new Decimal

An arbitrary-precision Decimal type for JavaScript.

功能

  • 整数和浮点数
  • 简单但功能齐全的 API
  • 复制 JavaScript 和对象的许多方法Number.prototype Math
  • 还处理十六进制、二进制和八进制值
  • 比 Java 的 BigDecimal JavaScript 版本更快,更小,也许更容易使用
  • 无依赖关系
  • 广泛的平台兼容性:仅使用 JavaScript 1.5 (ECMAScript 3) 功能
  • 全面的文档和测试集
  • 在引擎盖下被数学使用.js
  • 包括一个 TypeScript 声明文件:decimal.d.ts

image.png

安装

该库是单个 JavaScript 文件 decimal.js 或 ES 模块 decimal.mjs

浏览器:

<script src='path/to/decimal.js'></script>

<script type="module">
import Decimal from './path/to/decimal.mjs';
...
</script>

Npm:

npm install decimal.js
const Decimal = require("decimal.js");

import Decimal from "decimal.js";

import { Decimal } from "decimal.js";

使用

该库导出单个构造函数Decimal,该函数需要单个参数,即数字、字符串或十进制实例。

x = new Decimal(123.4567);
y = new Decimal("123456.7e-3");
z = new Decimal(x);
x.equals(y) && y.equals(z) && x.equals(z); // true

加减乘除

const a = new Decimal(4);
const b = new Decimal(2);
a.add(b); // 6
a.sub(b); // 2
a.mul(b); // 8
a.div(b); // 2

超过 javascript 允许的数字

如果使用超过 javascript 允许的数字的值,建议传递字符串而不是数字,以避免潜在的精度损失。

new Decimal(1.0000000000000001); // '1'
new Decimal(88259496234518.57); // '88259496234518.56'
new Decimal(99999999999999999999); // '100000000000000000000'

new Decimal(2e308); // 'Infinity'
new Decimal(1e-324); // '0'

new Decimal(0.7 + 0.1); // '0.7999999999999999'

可读性

与 JavaScript 数字一样,字符串可以包含下划线作为分隔符以提高可读性。

x = new Decimal("2_147_483_647");

其它进制的数字

如果包含适当的前缀,则也接受二进制、十六进制或八进制表示法的字符串值。

x = new Decimal("0xff.f"); // '255.9375'
y = new Decimal("0b10101100"); // '172'
z = x.plus(y); // '427.9375'

z.toBinary(); // '0b110101011.1111'
z.toBinary(13); // '0b1.101010111111p+8'

x = new Decimal(
    "0b1.1111111111111111111111111111111111111111111111111111p+1023"
);
// '1.7976931348623157081e+308'

有关更多信息,请参阅 doc 目录中的 API 参考。

标签:数字,decimal,JavaScript,js,new,Decimal
From: https://www.cnblogs.com/guojikun/p/17491294.html

相关文章

  • js递归简易深拷贝
    letobj={a:1,b:{b1:1,b2:2},c:[1,2,3]}functiondeepClone(obj){letresult=Array.isArray(obj)?[]:{}for(letkeyinobj){if(obj.hasOwnProperty(key)){if(obj[key]&&typeofobj[key]==&......
  • (二)JS数据类型、数据类型检测、数据类型转换、运算符、操作网页元素
    一、数据类型【JS的基本数据类型有哪些?基本数据类型和引用数据类型的区别】  二、数据类型检测 三、数据类型转换【隐式转换、强制转换】  四、运算符  五、操作网页元素 ......
  • JavaScript中var、let、const的使用和区别
    var:var是声明变量的主要关键字,它的作用域是函数作用域函数作用域:意味着变量在函数内部声明是可见的,在函数外部声明是不可见的var声明的变量可以被重新声明和赋值,它可以在同一个作用于下多次声明同一个变量let:let的作用域是块作用域,块作用域可以是函数、条件判断等内部{......
  • "this"关键字在js中的工作原理
    在js中,关键字“”this“”用于引用当前执行代码的上下文对象。它的工作原理是根据函数的调用方式来确定其绑定的值。它的值会根据函数的调用方式而变化。下面解释几种常见的"this"绑定规则:1.默认绑定:“this”默认绑定到全局对象(在浏览器环境中是window对象,在Node.js中是global......
  • Turndown 源码分析:四、`turndown.js`
    importCOMMONMARK_RULESfrom'./commonmark-rules'importRulesfrom'./rules'import{extend,trimLeadingNewlines,trimTrailingNewlines}from'./utilities'importRootNodefrom'./root-node'importNodefrom'......
  • vite+vue3项目中使用 lottie 动画,如何在 template 中直接使用本地 json 文件路径
    安装lottie-webyarnaddlottie-web封装 lottie组件<template><divref="animation":style="{width,height}"></div></template><script>import{defineComponent,ref,onMounted}from'vue'......
  • Understanding JavaScript Garbage Collection: Dive into Reference Counting and Ma
    JavaScript,theprogramminglanguageoftheweb,isoftenpraisedforitsabilitytohandlememorymanagementautomatically.TheJavaScriptengine'sgarbagecollectorplaysapivotalroleinthisprocess.Today,we'lltakeadeepdiveintotwom......
  • nodejs 伪全局变量模块
    使用这个文件可以实现不同文件中读写变量,适合当做共享变量文件名:globals.tsletglobals:any={myGlobal:{value:'canbeanytype:String,Array,Object,...'},aReadonlyGlobal:{value:'thisvalueisreadonly',protected:......
  • app直播源代码,JS生成随机数,生成指定位数的随机数
    app直播源代码,JS生成随机数,生成指定位数的随机数<html><script> //获取指定位数的随机数 functiongetRandom(num){  letrandom=Math.floor((Math.random()+Math.floor(Math.random()*9+1))*Math.pow(10,num-1)); } //调用随机数函数生成10位数的随机......
  • auto.js自动化手机脚本初始配置
    软件选择:auto.js8.0pro版本(对比4.0版本有阉割,微信支付宝不能点)有两种模式:客户端模式服务器模式auto.js4.0版本有一种模式:客户端模式设备和电脑连接:手机:服务器模式:手机和电脑在同一局域网下相互连接。(手机电脑同wifi远程连接,稳定)客户端模式:电脑连接以太网(不是虚拟机的......