2009-08-04 19 views
5

Tôi có một NSSlider đang cố gắng chuyển đổi một phao thông thường thành một CGFloat. Mã mà tôi đang sử dụng:floatValue cho CGFloat

CGFloat testing = [mainSlider floatValue]; 

Tuy nhiên điều này chỉ đơn giản là tạo biến kiểm tra "0,00" khi tôi cố đăng nhập.

NSLog(@"%f", testing); 

Có ai có ý tưởng nào về lý do điều này xảy ra không? Cảm ơn vì bất kì sự giúp đỡ.

Trả lời

10
  1. kiểm mainSlider không nil
  2. thử này chỉ trong trường hợp là (không thể nhớ nếu CGFloat là một đôi hay không) :

    NSLog (@ "% f", (đôi) thử nghiệm);

  3. Kiểm tra xem biến không bị bám theo như thế này:

    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

Lưu ý rằng casting cho 'double' sẽ không khôi phục bất kỳ chính xác mất khi' floatValue' chuyển đổi các giá trị cho chính xác đơn . Tốt hơn là chỉ sử dụng 'doubleValue'. –

+1

Ngoài ra, việc truyền tới (gấp đôi) là không cần thiết. Ngôn ngữ c làm điều đó ngầm khi gọi một hàm vargs với một đối số float. –

+0

mainSlider không phải là nil, chỉ vì một lý do kỳ lạ mà nó không chuyển thành một CGFloat. Khi tôi đăng nhập nó như: NSLog (@ "% f", [mainSlider floatValue]), nó trả về kết quả. Nhưng không phải khi tôi tạo ra một CGFloat từ nó. – PF1

Các vấn đề liên quan