2014-11-06 124 views
0

在我的iOS應用程序中,我從遠程服務器接收JSON數據。其中一個字段的值可以是一個雙數,比如24.87,或者是一個int數字,比如24. 現在我想在視圖中顯示數字,作爲標籤文本,但我總是要得到2位小數位數,爲例,如果遠程值是24,我想說明24.00 ...將字符串顯示爲帶兩位小數的數字

我使用下面的代碼來做到這一點:

if ([tarifa_comanda isEqualToString:@"T1"]){ 
     cell.tarifa_label.text = @"T1"; 

     NSNumberFormatter * f = [[NSNumberFormatter alloc] init]; 
     [f setNumberStyle:NSNumberFormatterDecimalStyle]; 
     NSNumber * myNumber = [f numberFromString:[[categorias objectAtIndex:indexPath.row] objectForKey:@"precio1_plato"]]; 
     cell.precio_plato_label.text = myNumber; 

    } 

但我正在逐漸從數量輸出錯誤。這是我得到的標籤是一個用藍色背景:

enter image description here

回答

4

可以通過設置maximumFractionDigits和minimumFractionDigits屬性來設置希望格式化程序顯示的最大和最小小數位數。

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 

[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[formatter setMaximumFractionDigits:2]; 
[formatter setMinimumFractionDigits:2]; 

NSLog(@"%@", [formatter stringFromNumber:[NSNumber numberWithFloat:25.342]]); 
NSLog(@"%@", [formatter stringFromNumber:[NSNumber numberWithFloat:25.3]]); 
NSLog(@"%@", [formatter stringFromNumber:[NSNumber numberWithFloat:25.0]]); 
+0

謝謝@mttcrsp,但是本來的答案是先給出的。 – mvasco 2014-11-06 23:03:07

+1

@mvasco但這是一個更好的答案。使用這種方法讓用戶開心。 – rmaddy 2014-11-06 23:09:26

+0

@rmaddy,使用此答案我得到以下輸出:如果源值是23.76,我得到0.00,如果源值是23,我得到23.00。任何幫助? – mvasco 2014-11-06 23:51:30

1

與 替換你的 「mynumber的」:[NSString的stringWithFormat @ [mynumber的的doubleValue] 「%2F。」]

+0

謝謝,但現在它顯示一個錯誤:'NSNumber'沒有可見的@interface聲明選擇器'float'。 – mvasco 2014-11-06 22:53:31

+1

正確的選擇符是'floatValue',但是你最好使用'doubleValue',因爲在這種情況下'float'會被提升爲'double'。 – 2014-11-06 22:56:10

+0

謝謝@robmayoff,它現在有效。 – mvasco 2014-11-06 23:01:54

相關問題