Round to nearest five

C#DoubleRounding

C# Problem Overview


I need to round a double to nearest five. I can't find a way to do it with the Math.Round function. How can I do this?

What I want:

70 = 70
73.5 = 75
72 = 70
75.9 = 75
69 = 70

and so on..

Is there an easy way to do this?

C# Solutions


Solution 1 - C#

Try:

Math.Round(value / 5.0) * 5;

Solution 2 - C#

This works:

5* (int)Math.Round(p / 5.0)

Solution 3 - C#

Here is a simple program that allows you to verify the code. Be aware of the MidpointRounding parameter, without it you will get rounding to the closest even number, which in your case means difference of five (in the 72.5 example).

    class Program
    {
        public static void RoundToFive()
        {
            Console.WriteLine(R(71));
            Console.WriteLine(R(72.5));  //70 or 75?  depends on midpoint rounding
            Console.WriteLine(R(73.5));
            Console.WriteLine(R(75));
        }

        public static double R(double x)
        {
            return Math.Round(x/5, MidpointRounding.AwayFromZero)*5;
        }

        static void Main(string[] args)
        {
            RoundToFive();
        }
    }

Solution 4 - C#

You can also write a generic function:

Option 1 - Method

public int Round(double i, int v)
{
    return (int)(Math.Round(i / v) * v);
}

And use it like:

var value = Round(72, 5);

Option 2 - Extension method

public static double Round(this double value, int roundTo)
{
    return (int)(Math.Round(value / roundTo) * roundTo);
}

And use it like:

var price = 72.0;
var newPrice = price.Round(5);

Solution 5 - C#

I did this this way:

int test = 5 * (value / 5); 

for the next value (step 5) above, just add 5.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMartinView Question on Stackoverflow
Solution 1 - C#Sebastiaan MView Answer on Stackoverflow
Solution 2 - C#Mike PolenView Answer on Stackoverflow
Solution 3 - C#Max GalkinView Answer on Stackoverflow
Solution 4 - C#Jonne KleijerView Answer on Stackoverflow
Solution 5 - C#Albert SwinkelsView Answer on Stackoverflow