次のコードを実行すると:
public int[] finalResult = new int[dimension];
public float[] calculatedValue = new float[dimension];
.....
.....
finalResult[i] = (int) Math.Floor(calculatedValue[i]);
Console.WriteLine( "calculated:" + calculatedValue[i]
+ " final:" + finalResult[i]
+ " test: " +(int) Math.Floor(calculatedValue[i]));
出力は次のとおりです。
計算:-0.02043936 最終:0 テスト:-1
まったく同じコードから生成されたときに「最終」が「テスト」と異なるのはなぜですか? 間違っているのはどれですか。なぜですか。
さらに単純で小さいフラグメント
finalResult[i]=(int)Math.Floor(-3.0002);
Console.WriteLine( "final: "+ finalResult[i]+ " test:" +(int)Math.Floor(-3.0002));
出力 最終:0 テスト:-4
以下は、最後に次のことを試したことを証明しているため、残りのコードは無関係です。
public int[] junkArray = new int[dimension];
junkArray[i]=(int)Math.Floor(-3.0002); //Junk Array is only assigned here in whole code
Console.WriteLine( "final: "+ (int) junkArray[i]+ " test:" +(int)Math.Floor(-3.0002));
final:0 test:-4 として出力されます