この場合:
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 シミュレーター、Apple LLVM 4.2 コンパイラーでテストしました。