感觉就像是那种只在原地失败的代码,但是我将尝试将其改编成代表我所看到的内容的代码段。

float f = myFloat * myConstInt; /* Where myFloat==13.45, and myConstInt==20 */
int i = (int)f;
int i2 = (int)(myFloat * myConstInt);

逐步执行代码后,i == 269和i2 == 268。这是怎么回事以说明差异?

最佳答案

浮点运算的执行精度可以比广告中的精度更高。但是,一旦将其存储在float f中,就会失去额外的精度。当然,在将结果强制转换为int之前,您不会在第二种方法中失去这种精度。

编辑:比我可能提供的更好的解释,请参见Why differs floating-point precision in C# when separated by parantheses and when separated by statements?这个问题。

关于c# - 为什么我的数字不正确地四舍五入?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2509576/

10-10 22:01