我有一些名为 - bombObject的对象,它有一个名为'blastRadius'的浮动属性。
当'NSLog(@“%。2f”,bombObject.blastRadius);'执行我得到我在第一步中做的任何事情,例如100等但是如果执行:'NSLog(@“%。2f”,bombObject.blastRadius *(3/7));'我得不到blastRadius的3/7,我得到0.00。但是如果我做'NSLog(@“%。2f”,(bombObject.blastRadius * 3)/ 7);'我得到了理想的答案。
为什么会这样?
先谢谢!
答案 0 :(得分:3)
int / int不会提升为float,因此最终只返回一个整数。 3/7小于1,所以最终截断为0.然后将bombObject.blastRadius乘以0,得到你看到的0.00答案。
为什么(bombObject.blastRadius * 3)/ 7可以正常工作?因为bombObject.blastRadius * 3是浮点结果;一个float / int将成为一个浮点数,这就是它在这个实例中工作的原因。
答案 1 :(得分:1)
(3/7)被评估为整数表达式,结果为零,因此blastRadius *(3/7)结果为零。
blastRadius * 3被计算为float(float * int = float),因此结果将被计算为浮点值。