当前位置:  开发笔记 > IOS > 正文

格式化NSNumber对象时如何指定小数位?

如何解决《格式化NSNumber对象时如何指定小数位?》经验,为你挑选了2个好方法。

我正在使用下面的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个小数位.

我怎样才能做到这一点?



1> Nathan Kinsi..:

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.


setFormat:不适用于iOS(可能在模拟器中工作,但在设备上不起作用).您需要使用setPositiveFormat:和setNegativeFormat:

2> Garrett..:

我相信你要找的是:"%.2f"

在最坏的情况下,您可以拆分该值,检查小数点后是否有任何内容.如果没有手动添加00?

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有