十进制四舍五入:为什么?

时间:2015-04-13 07:45:20

标签: c# .net

string a = "9.42";
string b = "1610.25";

decimal aa = decimal.Parse(a, CultureInfo.InvariantCulture);
decimal bb = decimal.Parse(b, CultureInfo.InvariantCulture);

decimal res = decimal.Multiply(aa, bb);
string res2 = res.ToString("#0.00", CultureInfo.CreateSpecificCulture("sv-SE"));

结果

//res = 15168.555
//res2 = "15168,56"

我想要输出res2 = 15168,55。如何实现呢?

2 个答案:

答案 0 :(得分:5)

默认的舍入方法是将中点值舍入到最接近的偶数小数,例如1.555四舍五入为1.56,但1.585四舍五入为1.58

您可以使用Math.Floor方法向下舍入,但它没有超载,您可以指定小数位数,因此您需要乘以和除以:

res = Math.Floor(res * 100m) / 100m;

答案 1 :(得分:0)

string res2 = (Math.Floor(res * 100) / 100).ToString();