2009-08-04 13 views
5

Mam NSSlider, który próbuje przekonwertować zwykły float na CGFloat. Kod, który używam:floatValue dla CGFloat

CGFloat testing = [mainSlider floatValue]; 

Jednak to po prostu sprawia, że ​​zmienna testowania „0.00”, kiedy próbuje go zalogować.

NSLog(@"%f", testing); 

Czy ktoś ma jakieś pomysły, dlaczego tak się stanie? Dzięki za pomoc.

Odpowiedz

10
  1. Sprawdź, mainSlider nie nil
  2. spróbować to na wszelki wypadek jest (nie pamiętam czy CGFloat jest podwójnie lub nie) :

    NSLog (@ "% f", (podwójne) testowanie);

  3. Sprawdź, czy zmienna nie jest zasłonięta tak:

    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

Zauważ, że rzucając na 'double' nie przywróci żadnych precyzję utracone podczas' floatValue' przeliczone na wartość pojedynczej precyzji . Lepiej po prostu użyć 'doubleValue'. –

+1

Również rzutowanie na (podwójne) jest niepotrzebne. Język c robi to niejawnie, wywołując funkcję vargs z argumentem float. –

+0

mainSlider nie jest zerowy, tylko z jakiegoś dziwnego powodu nie przenosi się do CGFloat. Kiedy loguję się jak: NSLog (@ "% f", [mainSlider floatValue]), zwraca wynik. Ale nie kiedy stworzę z tego CGFloat. – PF1

Powiązane problemy