我正在使用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
上播放这些陈述时
只有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
答案 0 :(得分:2)
请关注.toNearest函数中的第二个属性:https://mikemcl.github.io/decimal.js/#modes
2:向无限远(向上)轮 3:向无穷大(向下)轮转 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