2015-04-29 41 views
1

我下載了一些Json數據,其中有一個價格,價格獲得雙倍下載,例如,如果我有10.50分配給我的變量的值將是10.5,我如何在第一個十進制數之後保留0?轉換成NSNumber保留小數部分,即使有0s

這是我用來創建的NSNumber代碼:

NSNumber *numPrice = jsonElement[@"Price"]; //the json is 10.50 but numPrice becomes 10.5 

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

[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[formatter setMaximumFractionDigits:2]; 
[formatter setRoundingMode: NSNumberFormatterRoundUp]; 

NSString *numberString = [formatter stringFromNumber:numPrice]; 
+2

你有沒有試過[formatter setMinimumFractionDigits:2];用於顯示兩位十進制數 – Volker

+1

@Volker到目前爲止,您只有有效的「答案」。將它作爲一個發佈。 – rmaddy

+1

謝謝@Volker這工作完美:)如果你發佈它作爲答案我會接受它 – Signo

回答

4

對於輸出的目的,你可以設置你的NSNumberFormatter具有完全相同2十進制數字像

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

這是顯示兩個小數。如果可能的話,你的NSNumber在內部將被存儲一個數字。

1

任何尾隨零是簡單的顯示問題,他們是沒有號碼的一部分。

+0

OP已經這樣做。 @Volker的評論在這裏是正確的解決方案。 – rmaddy

+0

對,我不應該添加關於格式化的最後部分,刪除。 – zaph

0

你不行。當一個JSON文檔包含10.50時,它的的數字10.5。在JSON文檔中,10.5000000或10.50或10.5之間沒有區別。他們絕對是百分之百同樣的事情。

您可以隨意以任何方式顯示此號碼。

0

如果你想在保存爲NSNumber後顯示兩位小數的數字,你必須做的事情是將它們打印成帶有兩位小數的浮點數。類似的東西:

NSNumber *numPrice = jsonElement[@"Price"]; //the json is 10.50 but 

NSString *numberString = [NSString stringWithFormat:@"%0.2f", numPrice.floatValue]; 
相關問題