当我运行以下代码时:
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));
我得到最终输出:0 测试:-4