Округление до ближайшей пятерки - PullRequest
62 голосов
/ 07 октября 2009

Мне нужно округлить двойные до ближайших пяти. Я не могу найти способ сделать это с помощью функции Math.Round. Как я могу это сделать?

Что я хочу:

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

и т. Д.

Есть ли простой способ сделать это?

Ответы [ 3 ]

111 голосов
/ 07 октября 2009

Попробуйте:

Math.Round(value / 5.0) * 5;
44 голосов
/ 07 октября 2009

Это работает:

5* (int)Math.Round(p / 5.0)
13 голосов
/ 07 октября 2009

Вот простая программа, позволяющая проверить код. Помните о параметре MidpointRounding, без него вы получите округление до ближайшего четного числа, что в вашем случае означает разницу в пять (в примере 72.5).

    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();
        }
    }
...