我现在有可能愚蠢,但请检查一下。我有一个漂浮物:
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.我在这里缺少什么?
答案 0 :(得分:6)
3/2
被解释为(int)3/2
,因此评估为1
。您可以明确地将类型写为3.0f/2.0f
,这应该给出您期望的结果(就像将整个表达式明确地转换为float
一样)。
答案 1 :(得分:4)
转换其中一个操作数,这样另一个操作数将被提升为浮点数,你将有一个浮点除法而不是整数除法:
NSLog(@"2:%f",(3.0/2)*wordTime );