在這種情況下(對象 - ,的iOS):舍入當[INT] = [浮子] + [INT]
float a = 0.99999f;
int b = 1000;
int c = a + b;
在結果c = 1001
。我發現它發生是因爲b
轉換爲float(特定於iOS),因此a + b
沒有足夠的精度來處理1000.9999
和(爲什麼?)被四捨五入爲較高值。如果a
是0.999f
,我們得到c = 1000
- 理論上正確的行爲。
所以我的問題是爲什麼浮點數四捨五入到更高的價值?描述這種行爲(或慣例)的地方?
我在iPhone Simulator,Apple LLVM 4.2編譯器上測試了這個。
這裏我越來越1000. – Balu 2013-04-05 11:38:26
也剛剛開始1000 – 2013-04-05 11:38:45
我的錯誤,人。 'a = 0.99999f' – brigadir 2013-04-05 11:46:40