这可能是一个简单的解决方案,但我无法修复它。
我正在划分 2 个整数:
finishedGameFinalScore = [score integerValue];
CGFloat interval = 2/finishedGameFinalScore;
NSLog(@"interval = %f",interval);
日志返回0.000000
小数位数有限制吗?我需要保留十进制结果。
谢谢沙妮
这可能是一个简单的解决方案,但我无法修复它。
我正在划分 2 个整数:
finishedGameFinalScore = [score integerValue];
CGFloat interval = 2/finishedGameFinalScore;
NSLog(@"interval = %f",interval);
日志返回0.000000
小数位数有限制吗?我需要保留十进制结果。
谢谢沙妮
您的代码不起作用的原因是您将一个整数除以另一个整数,然后将结果转换为浮点数。
所以你有 2(一个整数)和一些其他数字(也是一个整数)。然后你将 2 除以这个数字——它可能大于 2。假设它是 3。
Integer
看到 2/3,他就像“0.66666667?嘘,小数点后没有人需要任何东西”。所以他截断了它。你只有0。
然后Integer
把号码给先生float
,先生float
拿到号码超级开心!他就像“是的,0!我要添加所有重要数字”。这就是你最终得到 0.0000000 的方式。
所以,是的,只需先转换为浮点数。甚至是双倍!
@Dustin说你需要将你的分频器值转换为浮点数,因为它会显示整数值
案例 1:类型转换
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);
只需将 f 提示添加到数字 2。在这种情况下,就可以了。
CGFloat interval = 2.0f/finishedGameFinalScore;
以上/以下所有答案都是正确的,并充分解释了这项工作的原因。
只需将 long 值从 1.0 分配给 float 变量。
unsigned long l1 = 65536;
unsigned long l2 = 256;
float f = (l1/1.0)/(l2/1.0);
NSLog(@"%f",f);