谁能向我解释一下为什么它应该返回值 42 时却一直返回 0?它在纸上有效,所以我知道数学是正确的,我只是想知道为什么它不能翻译?
int a = 60;
int b = 120;
int c = 85;
int progress;
progress = ((c-a)/(b-a))*100;
NSLog(@"Progess = %d %%",progress);
最佳答案
这是因为你的数学全部使用整数。
特别是,您的内部表达式正在计算 25/60,在整数数学中为零。
实际上,您的表达式过度括号,并且计算结果的顺序导致整数舍入问题。
如果你这样写公式的话,效果会很好:
progress = 100 * (c - a) / (b - a);
因为 100 * (c - a) 首先会计算为 2500,然后除以 60 得到 41。
另一种选择,如果变量 a
、b
或 c
中的任何一个(或多个)是 float
code>(或强制转换)该等式也有效。
这是因为其中任一操作数为浮点
的表达式将导致另一个(整数)操作数提升为浮点
,同样,此时表达式的结果也将是 float
。
关于objective-c - Objective-C 中的计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10250566/