1

簡単な質問ですが、これを行うには正しい方法があるはずです。1/16 ずつ増加する CGFloat があります。この値がいつ整数になるかを判断したい。

正しい方法がわからないため、別の変数を使用して反復回数を追跡するなどのアイデアを思いついてmod 16います。

4

3 に答える 3

4

通常、小数点以下の浮動小数点数を合計して整数にすることはできませんが、あなたのケースはルールの例外で1/16あり2^(-4)、この数値は float で正確に表すことができます。

- (void)testFloat
{
    float a = 0.0f;

    while (a != 2.0f) {
        a += 0.0625f;
    }

    NSLog(@"OK!");
}
于 2012-11-27T22:27:44.270 に答える
2

逆に、整数ループ カウンターを使用してこれを float に変換することをお勧めします。

for (int i = 0; i < 100; ++i)
{
    float x = (float)i / 16.0f;

    if (i % 16 == 0)
    {
        // if x is whole number...
    }
}
于 2012-11-27T22:02:45.960 に答える
1

浮動小数点演算は不正確であるため、変数の値が正確であることに期待することはできません2.0000

「正しい方法がわからないので、別の変数を使用して反復回数を追跡し、それを mod 16 にするなどのアイデアを考えています。」

これは素晴らしいアイデアです。

于 2012-11-27T22:01:50.080 に答える