3

重複の可能性:
CGFloat 追加のバグ?

私はCGPointを持っています(これは2つのCGFloatの周りの構造体です)。誰かがこれらの2行のコードをどのように説明してくれますか:

player.position = CGPointMake(player.position.x + 12.8f, player.position.y + 12.8f);
NSLog(@"%f,%f", player.position.x, player.position.y);

この出力を生成しています:

828.799988,236.800003
841.599976,249.600006
854.399963,262.399994
867.199951,275.199982
879.999939,287.999969
892.799927,300.799957
905.599915,313.599945

ポイントの開始値は (816, 224) です。

4

2 に答える 2

4

ここでは float 値を扱っています。つまり、そのマージンのエラーが発生します。特定の小数点以下の桁数に丸めたい場合は、次のコードを使用します。

NSString *value = [NSString stringWithFormat:@"%.1f", theFloat];

上記のコードは、必要なものである小数点以下 1 桁に丸められます。

于 2012-12-18T23:32:08.297 に答える
2

CGFloatは IEEE 754 の単精度または倍精度の浮動小数点数であり、よく知られた精度の問題があります。あなたが見ているのはその影響です。

于 2012-12-18T23:32:07.557 に答える