我有以下代码:
var voucherAmountValue = "5";
var totalValue = Math.Round(Convert.ToDecimal(voucherAmountValue), 2);
当我将totalValue
写入控制台时,会打印5
。我希望添加小数位数,为5.00
打印totalValue
,但它不会:它仍会打印5
。
如何将小数位数添加到没有小数位的小数位?
答案 0 :(得分:3)
这里的问题是Math.Round
不会添加小数位,只有限制它们。
测试一下:
decimal a = 5m;
decimal b = Math.Round(a, 2); // b will be 5
a = 5.00m;
b = Math.Round(a, 3); // b will be 5,00 (not 5,000)
b = Math.Round(a, 2); // b will be 5,00
b = Math.Round(a, 1); // b will be 5,0
如您所见,如果原始字符串仅包含"5"
,则小数值也只是5
,而调用Math.Round(..., 2);
只会限制小数位 down 为2,如果小于2,则不会添加缺失的小数零。
您可以通过显式评估将强制创建这些数字的表达式来修复:
var totalValue = Math.Round((Convert.ToDecimal(voucherAmountValue) / 100.0m) * 100.0m, 2);
答案 1 :(得分:2)
使用
var totalValue = ((decimal)voucherAmountValue/100)*100;
答案 2 :(得分:0)
据我所知,你有一个整数值。所以要舍入并有余数,请尝试以下代码:
int k = 5;
var totalValue = Math.Round(Convert.ToDecimal(k)).ToString(".00");
第二行代码表示:
整数值k
转换为float
Round()
静态类Math
的方法将值舍入到最接近的整数或指定的小数位数。
.ToString(".00")
表示您将始终查看是否存在空值。如果您不想看到空值,请使用此.ToString(".##");