我正在使用下面的一段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