奇怪的销售税在C中四舍五入到最接近的.05时的舍入误差#

时间:2015-04-24 08:41:03

标签: c# rounding

我正在开发一个c#应用程序,它接受一些商品价格并计算销售税。该应用程序运行良好,但我有计算销售税的问题,精确到.05,我一直在使用这个功能来做到这一点。

 public decimal customRound(decimal num)
    {
        return Math.Round(num * 20.0M) / 20.0M;
    }

然而,它没有做它本应该做的事情。

例47.50 * 15(税)/ 100 = 7.125(总税) 如果你通过7.125它将它舍入到7.1而不是7.15。最终价格为54.60而不是54.65 !!!

1 个答案:

答案 0 :(得分:2)

The default rounding method used for Math.Round is ToEven.

您想使用AwayFromZero。像这样使用它:

public decimal customRound(decimal num)
        {
            return Math.Round(num * 20.0M, MidpointRounding.AwayFromZero) / 20.0M;
        }

有关舍入数字的更多信息,请参阅Wikipedia