2010-09-16 12 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 किसी पूर्णांक में फिट करने के लिए बहुत बड़ा है, यह नहीं होगा काम। इसलिए आपको यह जानने की जरूरत है कि आपके मूल्य की सीमा उचित है।)

संबंधित मुद्दे