int doubleタイプ変数との混合演算
886 ワード
1.int値を使用してdouble結果を計算する場合(比例値:期待結果0~1の間)、結果異常(実績0.0)
上記のコードは、明示的な変換コマンドConvertを使用することにより、正しい結果を返すことができる.ToDouble()の場合、a*MapHight/MapWidthの演算順序は最後に非整数になります.(a/MapWidth)*MapHightと書くか、a/MapWidth*MapHightと書くと0.0に戻ります.変数結果エラーまたはプログラム異常の原因となります.
2.intタイプ変数と整数の混合演算
このように書くと、二重精度の変数Zrateの結果は0.0(コマンドライン表示は0)になります.a/10.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と書くと正しい数値が返されます.