我正在开发一个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 !!!
答案 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。