iOS int 总是返回 0 [重复]

Posted

技术标签:

【中文标题】iOS int 总是返回 0 [重复]【英文标题】:iOS int always returning 0 [duplicate] 【发布时间】:2014-01-13 22:34:09 【问题描述】:

我正在做一个小计算,但它总是返回 0..

    int totalBothTeams = [prefs integerForKey:@"totalTimeBothTeams"];
    int someCalculation = (totalBetween / totalBothTeams) * 100;

    NSLog(@"Time: %i", someCalculation);

有什么想法吗?

【问题讨论】:

整数除法/截断。试试(totalBetween * 100 / totalBothTeams) 你真的应该在学习 C 的时候学过这种东西,而且你应该在深入 Objective-C 之前学习 C。 【参考方案1】:

我假设 totalBetween 小于 totalBothTeams - 在这种情况下是除法

totalBetween / totalBothTeams

产生整数值0

如果您正在寻找“百分比”类型的答案,您可以先乘以 100,然后再进行除法。你仍然会得到“四舍五入”。或者您可以以双精度完成整个操作并在最后进行强制转换:

(totalBetween * 100) / totalBothTeams

(totalBetween * 100.0) / totalBothTeams + 0.5
后者会正确舍入

【讨论】:

【参考方案2】:

这是实际发生的情况:

int someCalculation = (totalBetween / totalBothTeams) * 100;

在此,如果totalBothTeams > totalBetween.. 并且按名称是..

(totalBetween / totalBothTeams) 将返回 0,因为它是整数除法。

和 0*任何东西 =0

所以去(totalBetween * 100 / totalBothTeams);

【讨论】:

以上是关于iOS int 总是返回 0 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

$result->num_rows 总是返回 0 [重复]

如何使用int数组作为字典键C# [重复]

Facebook getUser() 返回 0 [重复]

如何在Java中返回一个临时的int数组[重复]

华为机试题 HJ9提取不重复的整数

getResourceAsStream() 总是返回 null [重复]