如何在c#中使用Math.Round舍入数字?

use*_*064 0 c#

当值为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}");
Run Code Online (Sandbox Code Playgroud)

预期结果是2个十进制值.4.01.

Mat*_*ero 5

根据文件:

[...]将十进制值舍入到指定数量的小数位,并将中点值舍入到最接近的偶数.

看一下粗体文字.

如果该值是,4.005那么中点值.005将四舍五入为.00,而不是.01因为前者是偶数而后者是奇数.

所以,你得到的价值是预期的价值.

相反,您想要使用重载:

var result = Math.Round(number, 2, MidpointRounding.AwayFromZero);
Console.WriteLine($"{result:0.00}");
Run Code Online (Sandbox Code Playgroud)