我正在使用下面的一段Objective-C代碼來格式化一個NSNumber,並且它在大多數時間都能正常工作,但是當NSNumber對象持有一個整數(沒有小數部分)時,它並不完全符合我的要求, 。如何在格式化NSNumber對象時指定小數位?
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(80.0f, 90.0f, 225.0f, 40.0f)];
label.backgroundColor = [UIColor clearColor];
label.textColor = [UIColor whiteColor];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setFormat:@"###.##"];
int bytes = 1024 * 1024;
NSNumber *total = [NSNumber numberWithFloat:([self.totalFileSize floatValue]/bytes)];
label.text = [NSString stringWithFormat:@"0.00 MB of %@ MB", [formatter stringFromNumber:total]];
因此,舉例來說,如果self.totalFileSize
持有55.2300,就會顯示 「55.23」,因爲它應該在我的UILabel
。但是,如果同一個變量保持55,它將只在標籤上顯示「55」。
我真正想要的是這個代碼總是在輸出中包含2個小數位。
我該如何做到這一點?
我相信你的意思你相信他正在尋找的是:「%.2f」;) – schnaader 2009-02-08 00:35:56
使用它不會做你認爲的事情,因爲將NSNumber對象傳遞給NSLog將導致它調用[obj description],它將返回一個字符串。無論如何,我試圖避免像「如果不在那裏附加00」這樣的黑客行爲。我確信NSNumberFormatter有一個功能可以在這裏完成我想要的功能。 – jpm 2009-02-08 01:01:18
@Garret,我非常想找到這個簡單的解決方案。數字格式化並不容易。謝謝。 – JFS 2013-05-29 18:58:36