十进制 js 四舍五入 3digit 数字 [可能是一个错误?]

decimal js rounding 3digit numbers [probably a bug?]

我正在使用 decimal.js 来计算数字并利用处理大数字的优势..

现在我要将数字四舍五入到特定的乘数。

一切正常,直到我发现这个问题;

new Decimal(750).toNearest(500,3).toNumber() //-> 500

这一行将输出 500。这只是一个错误还是我的代码有错误?如果这是一个错误,我想知道为什么它只发生在下面显示的这个特定数字上......

new Decimal(75).toNearest(50,2).toNumber() //-> 100
new Decimal(7500).toNearest(5000,4).toNumber() //-> 10'000

当你在 decimal.js API

玩玩这些陈述时

只有3位数字可以正确舍入:

new Decimal(300).toNearest(200,3).toNumber() //-> 200
new Decimal(450).toNearest(300,3).toNumber() //-> 300
new Decimal(600).toNearest(400,3).toNumber() //-> 400

请注意 .toNearest-function 中的第二个 属性:https://mikemcl.github.io/decimal.js/#modes

2:向无穷大舍入(向上)
3:向 -Infinity 舍入(向下)
4:向最近的邻居舍入。如果等距,则从零舍入。

所以你要考虑期望的结果应该是什么,选择正确的舍入方式。四舍五入方式与位数无关

new Decimal(75).toNearest(50,2).toNumber() //-> 100
new Decimal(75).toNearest(50,3).toNumber() //-> 50
new Decimal(75).toNearest(50,4).toNumber() //-> 100