ERP系统中的金额计算为什么需要保留两位小数?
ERP系统中的金额计算为什么需要保留两位小数而不是多位?
ERP系统中有关金额的计算需要保留几位小数呢?是不是保留位数越多,计算越精确呢?其实不然,有关金额的计算并不是保留位数越多才会精确,有时候保留位数多反而会不精确。
如果你觉得保留位数越多越精确地话,那么我们先来看个例子:
- 例如我们给一个商品的售价保留了6位小数,售价 37.892500 元,顾客来买了两件这个商品,按照6位精确计算的话,37.892500 X 2 = 75.785000,顾客需要付 75.785000 ,实际上我们钱只能到分,所以你给顾客说需要付 75.79 元,那顾客不同意了,因为顾客觉得他应该付 37.89 X 2 = 75.78 元才对,不应该多付那一毛钱。
上面这个例子里,到底是谁出错了?到底是该付 75.79 还是付 75.78?
我们从程序的角度来看问题,数据库里保留小数位置越多,越是精确,double 型比 int 型更精确这是不争的事实。但是在价格计算上是个例外,由于人民币只能到分,所以我们如果保留多位的话,数字上看起来是更加精确了,但是实际买卖场景中都是到分来计算。
上面的例子之所以出问题,是因为,系统保留了多位,在售卖的过程中,只给顾客做了四舍五入的计算,这是不公平的。
两位小数是业务和财务上 的“有效精准”,在面向客户销售的过程中,我们一般是单品进行首付款的四舍五入和财务那边能对得上,也符合人民币到分的计算常理。
所以ERP系统中,有关金额的计算并不是保留位数越多才越精确,我们应该遵循实际的生活实际,保留两位小数是符合实际情况的。


6337

被折叠的 条评论
为什么被折叠?



