2016-09-19 31 views
0

當值爲4.005時,應舍入到4.01。但是,當我使用此代碼時,結果僅爲4.如何使用Math.Round在C#中進行四捨五入?

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。

回答

5

按照documentation

[...]四捨五入十進制值的小數位指定數量,並且舍入值中點到最接近的偶數

查看粗體文本。

如果該值爲4.005則中點值.005將四捨五入到.00,而不是.01,因爲前者是即使後者是奇數。

所以,你得到的價值是預期的價值。

相反,你要使用的overload

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