2

私はObjectiveCに取り組んでおり、2次元配列の適切なインデックスを推測しようとしています。

そのために、タグが設定されているボタンをいくつか使用して、2つのインデックスを1つの数値にマージします。たとえば、配列内の1,1の位置は、タグ=11になります。

その後、インデックスの2つのコンポーネントをマージ解除するために、次のコードを使用しています。

float tag = (float)[sender tag];

    float x = [[NSString stringWithFormat:@"%.2f", tag / 10.f] floatValue];
    //float x = (float)tag / 10.f;

    int y = floor (x);

    int z = (x - y) * 10;

理論はうまく機能しますが、次の結果が得られたときに驚いています。

タグ=23x = 2.29999995(2.3の期待される結果の代わりに)(23/10 = 2.3であり、2.2999995ではありません)!

私も2回といくつかの操作を試しましたが成功しませんでした。

誰かが私が間違っていることを知っていますか?

ありがとう。

4

2 に答える 2

4

整数演算を使用します。浮動小数点は、すべての数値、特に非整数値を完全に正確に表すわけではありません。

23の例[sender tag]:

int senderTag = 23;
int tagA = senderTag / 10;
int tagB = senderTag % 10;
NSLog(@"senderTag: %d, tagA: %d, tagB: %d", senderTag, tagA, tagB);

NSLog 出力:

送信者タグ: 23、タグ A: 2、タグ B: 3

于 2012-02-10T12:26:33.780 に答える
0

特に、1/3、1/5 などの分数は、浮動小数点演算では正しく表現できません。

于 2012-02-10T12:28:39.977 に答える