我正在使用下面的Objective-C代码来格式化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个小数位.
我怎样才能做到这一点?
0
对于您希望始终存在的每个小数位,您的格式字符串应该有一个" ".
[formatter setFormat:@"###.00"];
为"55.23"和".23"和".20"
[formatter setFormat:@"##0.00"];
为"55.23"和"0.23"和"0.20"
请参见数字格式字符串语法(Mac OS X版本10.0到10.3)
或者你可以使用10.4格式化程序--setMinimumFractionDigits:和- setMaximumFractionDigits:同时设置为2.
我相信你要找的是:"%.2f"
在最坏的情况下,您可以拆分该值,检查小数点后是否有任何内容.如果没有手动添加00?