我现在有可能很蠢,但是检查一下。我有一个浮点数:
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/2
改为1.5
,我得到了46、70、93和140。我遗漏了什么?
3/2
被解释为(int)3/2
,因此求值为1
。您可以将这些类型显式地写成3.0f/2.0f
,这样应该会得到您期望的结果(就像显式地将整个表达式转换为float
一样)。
对其中一个操作数进行强制转换,这样另一个操作数将被提升为浮点数,您将得到浮点除法而不是整数除法:
NSLog(@"2:%f",(3.0/2)*wordTime );