十进制 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
我正在使用 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