web-dev-qa-db-fra.com

Arrondir aux cinq plus proches

Je dois arrondir un double au cinq le plus proche. Je ne trouve pas de moyen de le faire avec la fonction Math.Round. Comment puis-je faire ceci?

Ce que je veux:

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

etc..

Y a-t-il un moyen facile de faire ceci?

63
Martin

Essayer:

Math.Round(value / 5.0) * 5;
114
Sebastiaan M

Cela marche:

5* (int)Math.Round(p / 5.0)
44
Mike Polen

Voici un programme simple qui vous permet de vérifier le code. Soyez conscient du paramètre MidpointRounding, sans lui, vous obtiendrez l'arrondi au nombre pair le plus proche, ce qui dans votre cas signifie une différence de cinq (dans l'exemple 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();
        }
    }
13
Max Galkin