1

有可能我现在很愚蠢,但是请检查一下。我有一个浮动:

float wordTime=46.81; // I get it after some calculations

然后我记录这个:

NSLog(@"1:%f", wordTime);
NSLog(@"2:%f", (3/2)*wordTime);
NSLog(@"3:%f", (5/2)*wordTime);
NSLog(@"4:%f", (7/2)*wordTime);

我明白了:(日志号 2 有问题)

 46.81
 46.81 // weird
 93.8
140.7

然后我将其更改为3/246、70、931.5和 140。我在这里缺少什么?

4

2 回答 2

6

3/2被解释为(int)3/2并因此计算为1。相反,您可以显式写出类型3.0f/2.0f,这应该会给出您期望的结果(就像将整个表达式显式转换为 一样float)。

于 2013-01-06T14:15:47.967 回答
4

转换其中一个操作数,以便将另一个操作数提升为浮点数,并且您将使用浮点除法而不是整数除法:

NSLog(@"2:%f",(3.0/2)*wordTime  );
于 2013-01-06T14:16:53.170 回答