在iOS应用中使用模运算符

8

我有一个以double类型存储的NSTimeInterval。我想使用%运算符获取该秒值内的分钟数。

minutes = secondValue % 60;

在这里,minutes 被声明为 double minutes

结果是 XCode 报错 "Invalid operands to binary %"

有何想法?


请参见https://dev59.com/UnM_5IYBdhLWcg3ww2Kb。 - martin clayton
3
除了让取模运算正常工作外,这个方法似乎得到了与您想要的相反的结果?如果 secondValue 是123(相当于2分3秒),则 secondValue % 60 的结果将为3。这似乎应该使用除法。 - Chuck
3个回答

13

根据C语言标准,第6.5.5节第2段:

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


这个回答没有意义,因为原帖已经被编辑了。至于这是否应该导致一个踩,我不确定。 - Carl Norum

12

原问题已被楼主修改,这是我的新回答:

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


你修复了一个模除操作,但是你建议的代码是否有意义? - martin clayton

4
如果secondValue是浮点型或双精度型,您可以使用C类型转换:
minutes = ((int)secondValue) % 60;

编辑:

(如果 secondValue 太大,无法适应 int 类型,这种方法就不起作用。因此您需要知道您的值的范围是否合适。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接