2012-01-23 128 views
14

你知道我該如何將float值轉換爲nsstring值,因爲使用我的代碼時出現錯誤。將浮點值轉換爲NSString

我的代碼:

- (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]; 
//.... 
} 

錯誤:

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

謝謝您的幫助。

回答

44

您需要使用%f格式說明浮法,不%@

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

爲了小數使用%.nf其中n爲位數小數點後後使用數字具體數量。

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

Obj-C使用C printf樣式格式。請檢查printf man page以瞭解所有其他可能的格式。

1

@"%f"聽起來像更合適的格式字符串爲float

+1

+1它不僅 「聽起來像」 一個更合適的格式 - 這是*到目前爲止*最適合'float'的格式:) :) – dasblinkenlight

+0

這就是我的意思,只是把它溫和地;-) –

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

多了一個選項:

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

現代(和更簡潔)的方法是:

NSString *str = @(myFloat).description;