瑞士和阿根廷货币第四个十进制数字四舍五入

时间:2011-02-27 16:09:10

标签: rounding currency precision

使用瑞士法郎算法舍入货币金额时,会考虑第二个和第三个十进制数字。如果小于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

如上所示,这些边缘情况在最终结果中有很大差异。

阿根廷货币四舍五入采用类似的模型,只关注第三个十进制数字。虽然舍入结果可能有两位或三位小数,但同样的原则适用;如果要舍入的值有四个或更多的十进制数字,算法是否应该截断第三个数字之后的任何内容,还是应该应用其他类型的中间舍入来获得第一个三位小数的结果?

谢谢!

1 个答案:

答案 0 :(得分:3)

  

如果小于26,则将它们向下舍入为0;否则如果小于76,则向下舍入到5;否则整个价值就会四舍五入。

由此我认为“截断”方法是合适的,因为0.0259XXXXX小于0.026