0

我刚刚解决了我在 iOS 应用程序中遇到的一个相当奇怪的问题。我需要将比例因子(我计算为64/38 ~= 1.684)应用于传递给方法的值。

我的问题的症结是这样的:

- (void)applyScaleTo:(int)value {

    // value := 64
    int first = value * (64/38)
    NSLog(@"First: %d", first);
    int second = (64 * value)/38;
    NSLog(@"Second: %d", second);

}

所需的值为107,但日志如下所示:

First: 64
Second: 107

我的解决方案是使用第二种方法,这很好,但我的问题是,为什么会出现这种差异?(顺便说一句,如果first更改为 a float,它仍会记录为64.00000...。)

4

1 回答 1

3

在第一种情况下,您将两个整数(64 和 38)相除,得到一个整数值(1)。要纠正这一点,您不必将结果值更改为浮点数(这只会将您的 64 整数结果转换为浮点数),但至少需要一个除法运算。

int first = value * ( (float) 64 / 38)

这应该给你 107 结果

于 2012-12-05T09:15:21.083 回答