2010-09-16 15 views
8

我有一個NSTimeInterval以雙精度存儲。我希望使用%運算符得到第二個值的分鐘數。在iOS應用中使用mod運算符

minutes = secondValue % 60; 

其中分鐘被聲明爲double minutes

其結果是,XCode中說 「無效的操作數爲二進制%」

的思考?

+0

查看http://stackoverflow.com/questions/1237778/how-do-i-break-down-an-nstimeinterval-into-year -months-days-hours-minutes-and – 2010-09-16 22:12:17

+3

除了讓模數工作,這不會給你想要的結果嗎?如果'secondValue'是123(2分鐘3秒),'secondValue%60'的結果將是3.看起來這應該是除法。 – Chuck 2010-09-16 22:13:54

回答

12

的OP改變了他們的問題,所以這是我的新的答案:

你想幹什麼minutes = floor(secondsValue)/60;你想INT師,不是模。

+0

您修正了一個模分裂 - 但是,您的建議代碼是否有意義? – 2010-09-16 22:20:45

+0

更好嗎? – AlcubierreDrive 2010-09-16 22:39:49

+0

..它當然更短! – 2010-09-16 22:47:12

13

從C標準,部分6.5.5乘法運算符,第2段:

%操作者的操作數應具有整數類型。

+0

由於OP編輯了這個問題,所以這個答案沒有任何意義。不管這是否會導致downvote,我不確定。 – 2012-03-01 18:54:47

4

如果secondValue是float或double,您可以使用C型鑄造:

minutes = ((int)secondValue) % 60; 

編輯:

(如果secondValue太大,適合用int表示,這不會因此你需要知道你的價值範圍是合適的。)