当值为4.005时,应该舍入为4.01。但是当我使用这段代码时,结果只有4。
var result = Math.Round(number*100)/100;
Console.WriteLine($"{result:0.00}");
OR
var result = Math.Round(number,2);
Console.WriteLine($"{result:0.00}");
预期结果是2个十进制值。 4.01。
答案 0 :(得分:5)
[...]将小数值舍入到指定数量的小数位,并将中点值舍入到最接近的偶数。
以粗体显示文字。
如果值为4.005
,则中点值.005
将四舍五入为.00
,而不是.01
,因为前者为偶数,后者为奇数。
所以,你得到的价值是预期值。
相反,您想使用overload:
var result = Math.Round(number, 2, MidpointRounding.AwayFromZero);
Console.WriteLine($"{result:0.00}");