2016-09-19 7 views
0

値が4.005の場合、値は4.01に丸められます。しかし、このコードを使用すると、結果は4になります。C#でMath.Roundを使って数値を丸める方法は?

var result = Math.Round(number*100)/100; 
    Console.WriteLine($"{result:0.00}"); 

    OR 

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

期待される結果は10進数で2つあります。 4.01。 documentationによれば

答えて

5

は、[...]小数桁の指定された数に小数点値を丸め、そして最も近い偶数に中点値を丸め。

太字のテキストをご覧ください。

値は4.005前者は偶数であり、後者が奇数であるため、その後の中間値.005.00に、なく.01に四捨五入される場合。

したがって、取得している値は予期している値です。

代わりに、あなたはoverloadを使用したい:

var result = Math.Round(number, 2, MidpointRounding.AwayFromZero); 
Console.WriteLine($"{result:0.00}"); 
関連する問題