【问题标题】:Using mod operator in iOS app在 iOS 应用中使用 mod 运算符
【发布时间】:2010-09-16 22:00:24
【问题描述】:

我有一个存储为双精度的 NSTimeInterval。我想使用 % 运算符获取第二个值内的分钟数。

minutes = secondValue % 60;

将分钟声明为double minutes

结果是 XCode 说“Invalid operands to binary %”

想法?

【问题讨论】:

  • 除了让模数起作用之外,这不是给你想要的相反的结果吗?如果secondValue 是 123(计算结果为 2 分 3 秒),secondValue % 60 的结果将是 3。看来这应该是除法。

标签: iphone nstimeinterval modulus


【解决方案1】:

来自 C 标准,6.5.5 乘法运算符部分,第 2 段:

% 运算符的操作数应为整数类型。

【讨论】:

  • 这个答案没有意义,因为 OP 编辑​​了这个问题。我不确定这是否是投反对票的原因。
【解决方案2】:

OP 改变了他们的问题,所以这是我的新答案:

你想做minutes = floor(secondsValue) / 60; 你想要整数除法,而不是模数。

【讨论】:

  • 您修正了一个模除数 - 但是,您建议的代码有意义吗?
【解决方案3】:

如果 secondValue 是 float 或 double,则可以使用 C 类型转换:

minutes = ((int)secondValue) % 60;

编辑:

(如果 secondValue 太大而无法放入 int 中,这将不起作用。因此您需要知道值的范围是否合适。)

【讨论】:

    猜你喜欢
    • 2011-07-28
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 1970-01-01
    相关资源
    最近更新 更多