整数除法后浮点数为0

sha*_*oga 14 objective-c cgfloat ios

这可能是一个简单的解决方案,但我无法解决它.

我正在划分2个整数:

finishedGameFinalScore = [score integerValue];
CGFloat interval = 2/finishedGameFinalScore;
NSLog(@"interval = %f",interval);
Run Code Online (Sandbox Code Playgroud)

日志返回 0.000000

小数位有限制吗?我需要保留小数结果.

谢谢Shani

Dus*_*tin 73

您的代码不起作用的原因是您将整数除以另一个整数,然后将结果转换为浮点数.

所以你有2(一个整数)和一些其他数字(也是一个整数).然后你用这个数除以2 - 这可能大于2.假设它是3.

Integer看到2/3,他就像"0.66666667?Pshh,无论如何都没有人需要小数点后的任何东西".所以他截断了它.你只有0.

然后Integer给先生float和先生的号码float是非常高兴得到一个号码!他都喜欢"yay,0!我将添加所有重要的数字".这就是你最终获得0.0000000的方式.

所以是的,先投入浮标.甚至是双倍!

在此输入图像描述


Par*_*iya 13

@ 达斯汀说ü将需要强制转换分频值浮动,因为它去浮法它显示整数值

案例1:Typecast

NSString *score = @"3";
 int interval = [str intValue];
 CGFloat interval = (2/(float)interval);
 NSLog(@"interval = %.2f",interval);
Run Code Online (Sandbox Code Playgroud)

案例2:不需要进行类型转换

NSString *score = @"3";
 float interval = [str floatValue];
 CGFloat interval = (2/interval);
 NSLog(@"interval = %.2f",interval);
Run Code Online (Sandbox Code Playgroud)


Dan*_*one 8

只需将f-hint添加到数字2中,在这种情况下即可.

CGFloat interval = 2.0f/finishedGameFinalScore;
Run Code Online (Sandbox Code Playgroud)

所有上述/下面的答案都是正确的,并充分解释了为什么这项工作.