这可能是一个简单的解决方案,但我无法修复它。
我正在划分2个整数:
finishedGameFinalScore = [score integerValue];
CGFloat interval = 2/finishedGameFinalScore;
NSLog(@"interval = %f",interval);
日志返回0.000000
小数位有限制吗?我需要保留小数结果。
由于 沙尼
答案 0 :(得分:73)
您的代码不起作用的原因是您将整数除以另一个整数,然后将结果转换为浮点数。
所以你有2(一个整数)和一些其他数字(也是一个整数)。然后你用这个数除2 - 这可能大于2.假设它是3。
Integer
看到2/3,他就像“0.66666667?Pshh,无论如何都没有人需要小数点后的任何东西”。所以他截断了它。你只有0。
然后Integer
向float
先生提供了号码,而float
先生非常乐意获得一个号码!他都喜欢“yay,0!我将添加所有重要的数字”。这就是你最终获得0.0000000的方式。
所以是的,先投入浮标。甚至是双倍!
答案 1 :(得分:12)
@ Dustin 表示你需要强制分类你的分频器值才能浮动,因为它在浮点数中显示整数值
案例1:Typecast
NSString *score = @"3";
int interval = [str intValue];
CGFloat interval = (2/(float)interval);
NSLog(@"interval = %.2f",interval);
案例2:无需进行类型转换
NSString *score = @"3";
float interval = [str floatValue];
CGFloat interval = (2/interval);
NSLog(@"interval = %.2f",interval);
答案 2 :(得分:8)
只需将f-hint添加到数字2中。在这种情况下,这将起到作用。
CGFloat interval = 2.0f/finishedGameFinalScore;
所有上述/下面的答案都是正确的,并完全解释了为什么这项工作。
答案 3 :(得分:1)
从1.0中分配长值并分配给浮点变量。
unsigned long l1 = 65536;
unsigned long l2 = 256;
float f = (l1/1.0)/(l2/1.0);
NSLog(@"%f",f);