【问题标题】:iOS int always returning 0 [duplicate]iOS int 总是返回 0 [重复]
【发布时间】: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。

标签: ios objective-c integer int


【解决方案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);

    【讨论】:

      猜你喜欢
      • 2013-12-23
      • 2012-02-12
      • 2012-08-04
      • 1970-01-01
      • 1970-01-01
      • 2012-08-12
      • 2012-09-16
      • 2012-05-03
      • 2018-08-24
      相关资源
      最近更新 更多