2009-08-04 9 views
5

के लिए floatValue मेरे पास एक एनएसएसएलडर है जो एक नियमित फ्लोट को CGFloat में परिवर्तित करने का प्रयास कर रहा है। मैं जिस कोड का उपयोग कर रहा हूं:CGFloat

CGFloat testing = [mainSlider floatValue]; 

हालांकि यह लॉग इन करने का प्रयास करते समय यह परीक्षण चर "0.00" बनाता है।

NSLog(@"%f", testing); 

क्या किसी के पास कोई विचार है कि ऐसा क्यों होगा? किसी भी मदद के लिए धन्यवाद।

उत्तर

10
  1. जाँच लें कि mainSlider नहीं शून्य
  2. सिर्फ मामले में यह कोशिश है (यदि CGFloat एक डबल है या नहीं याद नहीं कर सकते):

    NSLog (@ "% च", (डबल) परीक्षण);

  3. चेक कि चर इस तरह छाया नहीं किया जा रहा है:

    CGFloat testing = 0.0; 
    if(YES){ 
        CGFloat testing = [mainSlider floatValue]; 
        //should be: testing = [mainSlider floatValue]; 
    } 
    NSLog(@"testing = %f", testing); //this will print "testing = 0.000000" 
    
+2

ध्यान दें कि 'double' पर कास्ट करना किसी भी सटीक नहीं हो जाएगी खो दिया जब' floatValue' एकल परिशुद्धता के लिए मूल्य परिवर्तित । केवल 'डबलवैल्यू' का उपयोग करने के लिए बेहतर है। –

+1

इसके अलावा, कास्ट (डबल) अनावश्यक है। सी भाषा एक फ्लोट तर्क के साथ एक वर्क्स फ़ंक्शन को कॉल करते समय स्पष्ट रूप से करता है। –

+0

मेनस्लाइडर शून्य नहीं है, बस कुछ अजीब कारणों से यह एक CGFloat में स्थानांतरित नहीं होता है। जब मैं इसे लॉग करता हूं: NSLog (@ "% f", [mainSlider floatValue]), यह परिणाम देता है। लेकिन जब मैं इससे एक CGFloat नहीं बनाते हैं। – PF1

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