使用瑞士法郎算法舍入货币金额时,会考虑第二个和第三个十进制数字。如果小于26,则将它们向下舍入为0;否则如果小于76,则向下舍入到5;否则整个价值就会四舍五入。
20.125 => 20.10
20.143 => 20.15
20.179 => 20.20
当舍入的金额具有更大的小数精度时会发生什么?是否只是忽略了第三个之后的所有十进制数字(值被截断),或者首先以某种其他方式将值舍入为三位小数?例如,考虑截断与“Math.round()”方法(小于0.5舍入,否则向上舍入):
Truncation | "Math.round"
=================================================================
Start 3 d.p. Rounded | Start 3 d.p. Rounded
=================================================================
20.1259 -> 20.125 => 20.10 | 20.1259 -> 20.126 => 20.15
20.1759 -> 20.175 => 20.15 | 20.1759 -> 20.176 => 20.20
如上所示,这些边缘情况在最终结果中有很大差异。
阿根廷货币四舍五入采用类似的模型,只关注第三个十进制数字。虽然舍入结果可能有两位或三位小数,但同样的原则适用;如果要舍入的值有四个或更多的十进制数字,算法是否应该截断第三个数字之后的任何内容,还是应该应用其他类型的中间舍入来获得第一个三位小数的结果?
谢谢!
答案 0 :(得分:3)
如果小于26,则将它们向下舍入为0;否则如果小于76,则向下舍入到5;否则整个价值就会四舍五入。
由此我认为“截断”方法是合适的,因为0.0259XXXXX小于0.026