Today one of my friend asked me that he has some problems while rounding value to 2 decimal places and he was trying to round "2.145" up to 2 decimal places , he used Math.Round() funciton but it was giving output as 2.14 then I told him to use Math.Round(value, 2, MidpointRounding.AwayFromZero)) and he used it and was very happy that his issue solved .

But later I came to know that there are still issues present with

Math.Round(value, 2, MidpointRounding.AwayFromZero)) as mentioned on msdn at

http://msdn.microsoft.com/en-us/library/f5898377.aspx

that it will round 0.145 to 0.14 instead of 0.15 and rounding 2.135 to 2.13 instead of 2.14 becuae of loss of precision.

I found the two solutions for the above problem

Convert double to decimal

Math.Round((decimal(2.135), 2, MidpointRounding.AwayFromZero) it would show 2.14 and

Math.Round((decimal)0.145, 2, MidpointRounding.AwayFromZero) it would show 0.15

use Math.Ceiling

System.Math.Ceiling(2.135 * 100) / 100 it would show 2.14

And

System.Math.Ceiling(0.145 * 100) / 100 it would show 0.15

But later I came to know that there are still issues present with

Math.Round(value, 2, MidpointRounding.AwayFromZero)) as mentioned on msdn at

http://msdn.microsoft.com/en-us/library/f5898377.aspx

that it will round 0.145 to 0.14 instead of 0.15 and rounding 2.135 to 2.13 instead of 2.14 becuae of loss of precision.

I found the two solutions for the above problem

**Solution 1:**Convert double to decimal

Math.Round((decimal(2.135), 2, MidpointRounding.AwayFromZero) it would show 2.14 and

Math.Round((decimal)0.145, 2, MidpointRounding.AwayFromZero) it would show 0.15

**Solution 2:**use Math.Ceiling

System.Math.Ceiling(2.135 * 100) / 100 it would show 2.14

And

System.Math.Ceiling(0.145 * 100) / 100 it would show 0.15

Nice sharing. Saved my time.

ReplyDelete