在这种情况下:
float a = 0.99999f;
int b = 1000;
int c = a + b;
结果c = 1001
. 我发现它发生是因为b
转换为浮点数(特定于 iOS),然后a + b
没有足够的精度,1000.9999
并且(为什么?)被四舍五入到更高的值。如果我们得到a
-理论上正确的行为。0.999f
c = 1000
所以我的问题是为什么浮点数被四舍五入到更高的值?这种行为(或约定)在哪里描述?
我在 iPhone Simulator、Apple LLVM 4.2 编译器上对此进行了测试。