小编val*_*298的帖子

JS 大数分数且不损失精度

带分数支持的大数字:

我想在不损失精度的情况下执行数学运算。我怎样才能使用 JavaScript 来做到这一点?首先我尝试了decimal.js,但它没有保留精度,如下一个示例所示:

import {Decimal} from 'decimal.js';
const a1 = new Decimal(1);
const a2 = new Decimal(3);
console.log(a1.div(a2).toFraction()); // should be `1/3` but I get `33333333333333333333/100000000000000000000`
Run Code Online (Sandbox Code Playgroud)

接下来我尝试了fraction.js,但它不适用于大数字,例如:

import Fraction from 'fraction.js';
const n1 = new Fraction("99999999999999999999999999999999999999999999999");
const n2 = new Fraction("99999999999999999999999999999999999999999999990");
console.log(+(n1.sub(n2))) // should be 9, but I get 0
Run Code Online (Sandbox Code Playgroud)

是否有任何解决方案可以处理相对较大的数字(可以说与decimal.js支撑相同)但具有高精度(与fraction.js支撑相同)。

我检查了它在幕后的mathjs用途,所以对于大量数据来说没有任何优势:fraction.js

import * as math from "mathjs";
const a1 = math.fraction(math.number("99999999999999999999999999999999999999999999999"))
const a2 = math.fraction(math.number("99999999999999999999999999999999999999999999990"))
console.log(+(math.subtract(a1, a2))) …
Run Code Online (Sandbox Code Playgroud)

javascript math precision fractions mathjs

0
推荐指数
1
解决办法
300
查看次数

标签 统计

fractions ×1

javascript ×1

math ×1

mathjs ×1

precision ×1