0

次のコードは、予期しない(そして間違った値)を返しています。

x1 = ceil(ceil(ceil(100*1.0f)*1.0f)*1.1f);

110ではなく111を返します。数値に1を掛けても意味がないことは承知していますが、これらの1は必ずしも1ではありません。それらが他の値である場合、関数は期待どおりに機能します。

4

2 に答える 2

1

これは浮動小数点エラーの問題です。1.1fはおそらく実際には1.100056778のようなものです。

これは、100 * 1.100056778=110.0056778を意味します。そしてceilその数のは111です。

于 2012-12-20T05:45:13.970 に答える
1

演算子を使用してceilf修正しました。

float x1 = ceilf(ceilf(ceilf(100*1.0f)*1.0f)*1.1f);
NSLog(@"%f",x1); // 110
于 2012-12-20T05:47:34.740 に答える