C# デバッグモード"と"デバッグなしモードで答えが違う。
//8が2の何乗か求めるプログラム。
using System;
class Class1 {
static void Main() {
int a = (int)Math.Log(8.0,2.0);
double b = Math.Log(8.0,2.0);
if(b%1.0==0.0) Console.WriteLine("bは整数です");
else Console.WriteLine("bは整数ではありません");
Console.WriteLine("a={0} b={1}",a,b);
Console.Write("\n何かキーを押して");
Console.Read();
}
}
答えはa=3 b=3.0を予想していました。
C#.Net2003でコンパイルして実行した所、
デバッグモードで実行した時の答え:
bは整数です。
a=3 b=3
デバッグなしモードで実行した時の答え:
bは整数ではありません。
a=2 b=3
でした。
★質問1
これはC#.Net2003のバグなんでしょうか?
それとも、私がデバッグモードの仕様をきちんと理解していないだけでしょうか??
★質問2
8が2の何乗かをint型で解を取得したい場合、
(int)Math.Round(Math.Log(8.0,2.0))のようにわざわざ書かないといけないのでしょうか?
以上、アドバイスよろしくお願いします。
補足
そうですか…