web-dev-qa-db-ja.com

最も近い5に丸める

ダブルを最も近い5に丸める必要があります。 Math.Round関数でそれを行う方法が見つかりません。これどうやってするの?

私が欲しいもの:

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

等々..

これを行う簡単な方法はありますか?

63
Martin

試してください:

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

これは動作します:

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

コードを検証できる簡単なプログラムを次に示します。 MidpointRoundingパラメーターに注意してください。これがないと、最も近い偶数に丸められます。これは、5の差(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