2010-09-16 8 views
8

मेरे पास एक एनएसटीइम इंटरवल है जो डबल के रूप में संग्रहीत है। मैं% ऑपरेटर का उपयोग कर दूसरे मान के अंदर के मिनटों की मात्रा प्राप्त करना चाहता हूं।आईओएस ऐप में मॉड ऑपरेटर का उपयोग

minutes = secondValue % 60; 

जहां मिनट के रूप में double minutes

परिणाम घोषित किया जाता है कि XCode कहते हैं, "बाइनरी% करने के लिए अमान्य ऑपरेंड"

विचार है?

आप minutes = floor(secondsValue)/60; करने के लिए आप पूर्णांक प्रभाग, नहीं मापांक चाहते हैं:

+0

देखें http://stackoverflow.com/questions/1237778/how-do-i-break-down-an-nstimeinterval-into-year -माह-दिन-घंटे-मिनट-और –

+3

काम करने के लिए मॉड्यूलो प्राप्त करने के अलावा, क्या आप इसके इच्छित परिणाम के विपरीत परिणाम नहीं देते हैं? यदि 'secondValue' 123 है (जो 2 मिनट, 3 सेकंड तक काम करता है),' secondValue% 60' का परिणाम 3 होगा। ऐसा लगता है कि यह विभाजन होना चाहिए। – Chuck

उत्तर

12

ओपी अपने सवाल बदल गया है, इसलिए यहाँ मेरी नई जवाब है।

+0

आपने एक मॉड्यूलो डिवाइड तय किया है - लेकिन, क्या आपका सुझाया गया कोड समझ में आता है? –

+0

क्या यह बेहतर है? – AlcubierreDrive

+0

.. यह निश्चित रूप से छोटा है! –

13

सी मानक से, खंड 6.5.5 Multiplicative ऑपरेटरों, पैरा 2:

% ऑपरेटर की ऑपरेंड पूर्णांक प्रकार होगा।

+0

ओपी ने इस सवाल को संपादित करने के बाद से यह जवाब कोई समझ नहीं आता है। डाउनवोट के कारण का कारण है या नहीं, मुझे यकीन नहीं है। –

4

तो secondValue एक नाव या डबल है, तो आप सी प्रकार कास्टिंग का उपयोग कर सकते हैं:

minutes = ((int)secondValue) % 60; 

संपादित करें:

(यदि secondValue किसी पूर्णांक में फिट करने के लिए बहुत बड़ा है, यह नहीं होगा काम। इसलिए आपको यह जानने की जरूरत है कि आपके मूल्य की सीमा उचित है।)