How to round up in C#

By FoxLearn 11/5/2024 1:49:54 PM   110
In C#, rounding is typically done using the Math.Round() method.

For instance, Math.Round(1.5) returns 2 and Math.Round(3.5) returns 4, which follows standard rounding rules.

However, when you round numbers like Math.Round(2.5) or Math.Round(4.5), the results might be surprising: Math.Round(2.5) returns 2 and Math.Round(4.5) returns 4, not 3 or 5 as one might expect.

For example:

var x = Math.Round(1.5); //Output: 2
var y = Math.Round(2.5); //Output: 2

This behavior is due to the rounding method's default use of rounding to the nearest even number (also called "bankers' rounding"), which helps minimize rounding bias in large datasets.

To implement a correct round-up in C#, where values like 1.5 round to 2 and 2.5 round to 3, you can create the RoundUp method.

double RoundUp(double x)
{
    return Math.Floor(x + 0.5);
}
 
var x = RoundUp(1.5); //Output: 2
var y = RoundUp(2.5); //Output: 3

You can also round up a number using the Math.Ceiling method, which always rounds a number to the smallest integer greater than or equal to the specified number.

For example:

double number = 3.14;
double roundedUp = Math.Ceiling(number); //Output: 4

Math.Ceiling(number) returns the smallest integer that is greater than or equal to the number. In this case, it rounds 3.14 up to 4.