int doubleタイプ変数との混合演算

886 ワード

1.int値を使用してdouble結果を計算する場合(比例値:期待結果0~1の間)、結果異常(実績0.0)
        static void Main(string[] args)
        {
            int a = 350;
            int MapWidth = 501;
            int MapHight = 580;
            double Zrate;
            Zrate = Convert.ToDouble(a * MapHight / MapWidth);
            Console.WriteLine(Zrate);
            Console.ReadKey();
        }

上記のコードは、明示的な変換コマンドConvertを使用することにより、正しい結果を返すことができる.ToDouble()の場合、a*MapHight/MapWidthの演算順序は最後に非整数になります.(a/MapWidth)*MapHightと書くか、a/MapWidth*MapHightと書くと0.0に戻ります.変数結果エラーまたはプログラム異常の原因となります.
2.intタイプ変数と整数の混合演算
        static void Main(string[] args)
        {
            int a = 5;
            double Zrate = a /10;
            Console.WriteLine(Zrate);
            Console.ReadKey();
        }

このように書くと、二重精度の変数Zrateの結果は0.0(コマンドライン表示は0)になります.a/10.0と書くと正しい数値が返されます.