2020年7月2日 星期四

[debug] Round函數 、 四捨五入

寫Report時,由於 MS Access 、 .Net 的Round都是四捨六入(銀行家演算法) IEEE標準
如果要真正的四捨五入算法
則要使用:
Format(單位重量 x 數量 , "N2")
Round(單位重量 x 數量 , 2 , System.MidpointRounding.AwayFromZero)

範例:
原始值: (double)單位重量 x (int)數量

 一、Format(單位重量 x 數量,"N2") , Total = 48.23

 二、Round(單位重量 x 數量,2,System.MidpointRounding.AwayFromZero)  , Total = 48.22







其中要注意:
Round()函數如果傳入double型別,因為精準度不夠,會導致結果不會四捨五入。

更改如下即可:
Round(CDec(單位重量)*CDec(數量),2,System.MidpointRounding.AwayFromZero)

浮點數計算結果更接近正解? 算錢用浮點,遲早被人扁