Search code examples
c#mathrounding

Built in .Net algorithm to round value to the nearest 10 interval


How to, in C# round any value to 10 interval? For example, if I have 11, I want it to return 10, if I have 136, then I want it to return 140.

I can easily do it by hand

return ((int)(number / 10)) * 10;

But I am looking for an builtin algorithm to do this job, something like Math.Round(). The reason why I won't want to do by hand is that I don't want to write same or similar piece of code all over my projects, even for something as simple as the above.


Solution

  • There is no built-in function in the class library that will do this. The closest is System.Math.Round() which is only for rounding numbers of types Decimal and Double to the nearest integer value. However, you can wrap your statement up in a extension method, if you are working with .NET 3.5, which will allow you to use the function much more cleanly.

    public static class ExtensionMethods
    {
        public static int RoundOff (this int i)
        {
            return ((int)Math.Round(i / 10.0)) * 10;
        }
    }
    
    int roundedNumber = 236.RoundOff(); // returns 240
    int roundedNumber2 = 11.RoundOff(); // returns 10
    

    If you are programming against an older version of the .NET framework, just remove the "this" from the RoundOff function, and call the function like so:

    int roundedNumber = ExtensionMethods.RoundOff(236); // returns 240
    int roundedNumber2 = ExtensionMethods.RoundOff(11); // returns 10