在c#中,小数的上下四舍五入有不同的情况
本文关键字:情况 四舍五入 上下 小数 | 更新日期: 2023-09-27 18:06:09
我用c#编写了计费系统的应用程序。
总账单可以四舍五入,方便顾客向收银员付款。它取决于最后一个以分结尾的值。我使用数据类型为十进制进行计算。
当以cents 0.00, 0.01, 0.02结尾时,将把四舍五入为0.00例子:
- 10.00、10.01或10.02四舍五入到10.00
- 10.10、10.11或10.12四舍五入到10.10
例子:
- 10.03、10.04或10.05四舍五入为10.05
- 10.13、10.14或10.15四舍五入到10.15
例子:
- 10.05、10.06或10.07四舍五入到10.05
- 10.15、10.16或10.17四舍五入到10.15
当以cents 0.08或0.09 **结尾时,将**四舍五入为0.10
例子:
- 10.08或10.09四舍五入到10.10
- 10.18或10.19四舍五入到10.20
我希望有人能帮我解决这个问题。
我建议使用一种扩展方法来检查最后一位数字。但你可以做到这一点,只需通过乘法并确保你使用正确的整数类型。
你几乎可以从这个答案中得到答案。
如何四舍五入到最接近的0.5?
简单的回答是:
public decimal Round(decimal value)
{
return Math.Round(value * 20) / 20;
}
static public decimal RoundToNickel(decimal value)
{
var mod = value % 0.05M;
if (mod >= 0.03M)
{
return value + 0.05M - mod;
}
return value - mod;
}