2012-01-23 42 views
14

Bạn có biết làm thế nào tôi có thể chuyển đổi giá trị float thành giá trị nsstring vì với mã của tôi, có lỗi.Chuyển đổi giá trị phao sang NSString

Mã của tôi:

- (float)percent:(float)a :(float)b{ 
    return a/b * 100; 
} 

- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObjects:(NSArray*)objects { 
    // .... 

    float tx_nb_demande_portabilite = [self percent: [(NSNumber*) [stat nb_demande_portabilite] floatValue] :[(NSNumber*) [stat nb_users] floatValue]]; 
    NSString *tx_nb_demande_portabilite_st = [NSString stringWithFormat:@"%@", tx_nb_demande_portabilite]; 
//.... 
} 

Lỗi:

EXC_BAD ACCESS for NSString *tx_nb_demande_portabilite_st = [NSString stringWithFormat:@"%@", tx_nb_demande_portabilite]; 

Cảm ơn bạn đã giúp đỡ của bạn.

Trả lời

44

Bạn cần sử dụng %f định dạng thông số cho nổi, không %@.

NSString *str = [NSString stringWithFormat:@"%f", myFloat]; 

Để sử dụng số chữ số cụ thể sau khi sử dụng thập phân %.nf trong đó n là số chữ số sau dấu thập phân.

// 3 digits after decimal point 
NSString *str = [NSString stringWithFormat:@"%.3f", myFloat]; 

Obj-C sử dụng định dạng kiểu C printf. Vui lòng kiểm tra printf man page để biết tất cả các định dạng có thể khác.

1

@"%f" giống như chuỗi định dạng phù hợp hơn cho float.

+1

+1 Nó không chỉ "nghe như" một định dạng thích hợp hơn - nó là * đến nay * định dạng thích hợp nhất cho 'float' :) – dasblinkenlight

+0

Đó là ý của tôi, chỉ cần đặt nó nhẹ ;-) –

1
[NSString stringWithFormat:@"%f", tx_nb_demande_portabilite]; 
4

hơn một lựa chọn:

NSString * str = [NSNumber numberWithFloat:value].stringValue; 
0

Một cách tiếp cận hiện đại (và ít tiết) sẽ là:

NSString *str = @(myFloat).description; 
Các vấn đề liên quan