85 votes

Tour la plus proche de cinq C#

Je suis à l'aide de C# et j'ai besoin d'arrondir un double la plus proche de cinq ans. Je ne peux pas trouver un moyen de le faire avec les Maths.Fonction Round. Comment puis-je faire cela?

Ce que je veux:

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

et ainsi de suite..

Est-il un moyen facile de faire cela?

153voto

Sebastiaan Megens Points 2705

Essayez:

Math.Round(value / 5.0) * 5;

58voto

Mike Polen Points 3173

Ceci fonctionne:

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

15voto

Max Galkin Points 10116

Voici un programme simple qui vous permet de vérifier le code. Être conscient de la MidpointRounding paramètre, sans elle, vous obtiendrez de l'arrondi au plus proche du même numéro, qui, dans votre cas, signifie différence de cinq (dans le 72.5 exemple).

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X