3

可能重复:
CGFloat 添加错误?

我有一个 CGPoint(它只是一个围绕两个 CGFloats 的结构)。有人可以向我解释这两行代码如何:

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

您在这里处理浮点值。这意味着该边际将存在误差。如果要四舍五入到一定的小数位数,请使用以下代码:

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

上面的代码四舍五入到小数点后 1 位,这是您需要的。

于 2012-12-18T23:32:08.297 回答
2

CGFloat是 IEEE 754 单精度或双精度浮点数,存在众所周知的精度问题。你所看到的就是这样的效果。

于 2012-12-18T23:32:07.557 回答