2012-08-15 11 views
14

के बाद 0 है यह एक आसान समाधान हो सकता है लेकिन मैं इसे ठीक नहीं कर सकता।फ्लोट पूर्णांक विभाजन

finishedGameFinalScore = [score integerValue]; 
CGFloat interval = 2/finishedGameFinalScore; 
NSLog(@"interval = %f",interval); 

लॉग रिटर्न 0.000000

वहाँ दशमलव स्थानों के लिए कोई सीमा है:

2 पूर्णांकों विभाजित कर रहा हूँ? मुझे दशमलव परिणाम को संरक्षित करने की आवश्यकता है।

धन्यवाद शनि

+1

'CGFloat finishedGameFinalScore = [स्कोर floatValue];' 'CGFloat अंतराल = 2.0f/finishedGameFinalScore;' – janusbalatbat

+1

आप एक अस्थायी सूचक संख्या से विभाजित करने के लिए एक चल बिन्दु संख्या प्राप्त करने के लिए है। – Joe

+1

यह प्रत्येक सी-आधारित भाषा के लिए सच है। दो इंट्स को विभाजित करना एक int में परिणाम। – borrrden

उत्तर

71

कारण अपने कोड काम नहीं करता है कि आप एक अन्य पूर्णांक द्वारा एक पूर्णांक विभाजित कर रहे हैं और उसके बाद एक नाव के लिए परिणाम कास्टिंग है।

तो आपके पास 2 (एक पूर्णांक) और कुछ अन्य नंबर (एक पूर्णांक भी) है। फिर आप इस संख्या से 2 को विभाजित करते हैं - जो कि 2 से अधिक है। मान लीजिए कि यह 3.

Integer 2/3 देखता है और वह "0.66666667" Pshh जैसा है, किसी को भी दशमलव बिंदु के बाद किसी भी चीज़ की आवश्यकता नहीं है "। तो वह इसे छीनता है। आपके पास 0.

फिर Integer श्री float और श्री float को संख्या प्राप्त करने के लिए बहुत खुश है! वह सब "यय, ए 0 की तरह है! मैं सभी विशिष्ट अंक जोड़ने जा रहा हूं"। और इस तरह आप 0.0000000 के साथ समाप्त हो जाते हैं।

तो हाँ, बस पहले एक फ्लोट पर डालें। या यहां तक ​​कि एक डबल!

enter image description here

+0

यहां तक ​​कि केवल 'CGFloat अंतराल = 2.0/समाप्त GameFinalScore;' (जोड़ें) '0')। '2 के रूप में।0' एक 'CGFloat' है, परिणाम सभी decimals रखने '' CGFloat' होगा। –

12

@डस्टिन कहा यू टाइपकास्ट करने अपने विभक्त मूल्य फ्लोट करने के लिए के रूप में यह नाव में चला जाता है यह पूर्णांक मान

मामला 1 से पता चलता आवश्यकता होगी: Typecast

NSString *score = @"3"; 
int interval = [str intValue]; 
CGFloat interval = (2/(float)interval); 
NSLog(@"interval = %.2f",interval); 

केस 2: समान किरदार के लिए कोई ज़रूरत नहीं

NSString *score = @"3"; 
float interval = [str floatValue]; 
CGFloat interval = (2/interval); 
NSLog(@"interval = %.2f",interval); 
8

बस इस मामले कि चाल करना होगा में नंबर 2 के लिए च-संकेत जोड़ें।

CGFloat interval = 2.0f/finishedGameFinalScore; 

सभी उपर्युक्त/नीचे उत्तर सही हैं और पूरी तरह से यह काम क्यों समझाते हैं।

+0

आम तौर पर, यदि आप पहले से ही दो उत्तरों हैं तो आप इसे एक नए उत्तर के रूप में नहीं जोड़ेंगे जब तक यह महत्वपूर्ण महत्वपूर्ण डेटा जोड़ता न हो। यदि आप सोचते हैं कि यह वास्तव में कुछ जोड़ता है तो आप इसे प्रश्न या किसी अन्य उत्तर पर टिप्पणी कर सकते हैं। लेकिन मैं इसे +1 कर दूंगा क्योंकि आप नए हैं। – Dustin

0

बस 1.0 से लंबा मूल्य devide और फ्लोट चर के लिए आवंटित।

unsigned long l1 = 65536; 
unsigned long l2 = 256; 
float f = (l1/1.0)/(l2/1.0); 

NSLog(@"%f",f); 
संबंधित मुद्दे