我使用C#编写了结算系统的应用程序。
总账单可以向上或向下舍入,以方便客户向收银员付款。它取决于以美分结尾的最后一个值。我使用数据类型十进制进行计算。
以美分 0.00,0.01,0.02 结束时,向下舍入至 0.00
示例:
以美分 0.03,0.04,0.05 结束时,向上舍入至 0.05
示例:
以美分 0.05,0.06或0.07 结束时,向下舍入至 0.05
示例:
以美分 0.08或0.09 **结束时,**将向上舍入至 0.10
示例:
现在的问题是我无法使用 Math.Round ,因为答案不同,不符合系统要求。假设我的总账单是10.14 ,它将向下舍入到10.10 但答案应该向上舍入到10.15。
我希望有人帮我解决这个问题。
答案 0 :(得分:3)
答案 1 :(得分:3)
简单的答案是:
public decimal Round(decimal value)
{
return Math.Round(value * 20) / 20;
}
答案 2 :(得分:0)
static public decimal RoundToNickel(decimal value)
{
var mod = value % 0.05M;
if (mod >= 0.03M)
{
return value + 0.05M - mod;
}
return value - mod;
}