0

我有一个名为-bombObject 的对象,它有一个名为“blastRadius”的浮点属性。

当'NSLog(@"%.2f",bombObject.blastRadius);' 执行我得到我在第一步中所做的任何事情,例如 100 等。但是如果执行:'NSLog(@"%.2f",bombObject.blastRadius*(3/7));' 我没有得到 3/7 的blastRadius,我得到 0.00。但是,如果我执行 'NSLog(@"%.2f",(bombObject.blastRadius*3)/7);' 我得到了想要的答案。

为什么是这样?

提前致谢!

4

2 回答 2

3

int/int 不会提升为浮点数,因此您最终只会返回一个整数。3/7 小于 1,因此您最终会截断为 0。然后将 bombObject.blastRadius 乘以 0,得到您所看到的 0.00 答案。

为什么 (bombObject.blastRadius*3)/7 可以工作?因为 bombObject.blastRadius*3 是一个浮点结果;一个 float / int 将成为一个 float 这就是它在这种情况下工作的原因。

于 2012-10-09T22:54:54.373 回答
1

(3/7) 被计算为整数表达式,结果为零,因此 blastRadius*(3/7) 结果为零。

blastRadius*3 被评估为浮点数 (float * int = float) ,因此结果被评估为浮点值。

于 2012-10-09T22:56:45.567 回答