We have a number of 4 characters accuracy:
decimal testdecimal = 14.7848m;
And we want to round it up to two characters as we were taught in school, right to left. As a result, you should get 14.79:
console.writeline (testdecimal);
Console.WriteLine (Math.round (TestDecimal, 2, Midpointrounding.AwayFromZero)) // 14.78;
But reality refuses to coincide with school knowledge, and start it under these school knowledge customized:
console.writeline (Math.round (Testdecimal, 3, midpointrounding.awayfromzero)) // 14,785;
Console.WriteLine (Math.round (Math.round (Testdecimal, 3, Midpointrounding.awayFromzero), 2, midpointrounding.awayfromzero)) // 14,79;
Answer 1, Authority 100%
Do someone lame schoolpage?
There is a rounding down (Math.floor () function), rounding up (Math.ceiling () function) and simply rounding to the nearest whole (Math.round () function).
In this case, rounding to the nearest whole: if the final number is less than 5, then rounding down, if more than or equal then up. Since we have a number 14.78 4 8 and the third digit less than 5, then rounded down. The right answer is 14.78.
Answer 2
What is the question?
If rounded 14,7848 to a number with two decimal places, it turns out 14.78. No options.
Answer 3
And why such difficulties? If you need to round the number up , then you can do as for example:
Public Static Decimal Roundup (Decimal Number, Int Digits)
{
var factor = convert.todecimal (Math.pow (10, Digits));
RETURN MATH.CEILING (Number * Factor) / Factor;
}
Console.WriteLine (Roundup (14.7848m, 2)); // 14.79
Console.WriteLine (Roundup (14.78424m, 3)); // 14.785
Console.WriteLine (Roundup (14.12m, 1)); // 14.2.
demo: dotnetfiddle
In general, look at the answers from other users. Your judgments about rounding numbers are somewhat strange.