这可能是一个简单的解决方案,但我无法修复它。整数除法后浮点数为0
我除以2点的整数:
finishedGameFinalScore = [score integerValue];
CGFloat interval = 2/finishedGameFinalScore;
NSLog(@"interval = %f",interval);
日志返回0.000000
是否有小数的限制吗?我需要保留十进制结果。
感谢 沙尼
这可能是一个简单的解决方案,但我无法修复它。整数除法后浮点数为0
我除以2点的整数:
finishedGameFinalScore = [score integerValue];
CGFloat interval = 2/finishedGameFinalScore;
NSLog(@"interval = %f",interval);
日志返回0.000000
是否有小数的限制吗?我需要保留十进制结果。
感谢 沙尼
您的代码不工作的原因是,你将一个整数被另一个整数,然后铸造结果为float。
所以你有2(一个整数)和一些其他数字(也是一个整数)。然后你除以2这个数字 - 这可能是大于2.假设它是3.
Integer
见2/3,他就像“0.66666667?Pshh,没有人需要小数点后任何东西”。所以他截断了它。你只有0.
然后Integer
给数字先生float
和先生float
是超级开心得到一个数字!他就像“好吧,0!我要添加所有重要的数字”。这就是你最终得到0.0000000的结果。
所以是的,只是先投到一个浮动。甚至是双倍!
即使只是'CGFloat interval = 2.0/finishedGameFinalScore;'(add '.0')。作为'2。0'是'CGFloat',结果将是一个'CGFloat'保存所有的小数。 – 2016-02-16 15:07:21
@达斯汀说ü将需要类型转换您分频器值浮动,因为它去浮法它显示整数值
案例1:强制转换
NSString *score = @"3";
int interval = [str intValue];
CGFloat interval = (2/(float)interval);
NSLog(@"interval = %.2f",interval);
CASE 2:无需类型转换
NSString *score = @"3";
float interval = [str floatValue];
CGFloat interval = (2/interval);
NSLog(@"interval = %.2f",interval);
正是在这种情况下,会做的伎俩的F-提示添加到数字2。
CGFloat interval = 2.0f/finishedGameFinalScore;
所有上面/下面的答案都是正确的,完全解释了为什么这项工作。
通常情况下,如果已经有两个答案,除非添加重要的重要数据,否则不会将其添加为新答案。如果你认为它真的增加了一些东西,你可以在问题或其他答案上发表评论。但我会为它+1,因为你是新的。 – Dustin 2012-08-15 16:40:47
只是从1.0开始分配长值并分配给浮点型变量。
unsigned long l1 = 65536;
unsigned long l2 = 256;
float f = (l1/1.0)/(l2/1.0);
NSLog(@"%f",f);
'CGFloat的finishedGameFinalScore = [得分的floatValue];''CGFloat的间隔= 2.0F/finishedGameFinalScore;' – janusbalatbat 2012-08-15 12:30:10
你必须通过一个浮动指针数目来划分以获得一个浮点数。 – Joe 2012-08-15 12:31:16
对于每种基于C的语言都是如此。将两个整数相除会得到一个整数。 – borrrden 2012-08-15 12:32:18