2

我正在研究Objective C,并试图推断出二维数组的正确索引。

为此,我有几个按钮设置标签,将两个索引合并为一个数字。例如,数组中的位置 1,1 导致标记 = 11。

之后取消合并索引的两个组件,我使用以下代码:

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;

这个理论很好,但是当我得到这些结果时我很惊讶:

tag = 23 x = 2.29999995 而不是 2.3 的预期结果(23 / 10 = 2.3 而不是 2.2999995)!

我也尝试过两次和多次操作但没有成功。

有人知道我在做什么错吗?

谢谢。

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 回答