我已按如下方式设置NSNumberFormatter
:
formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMinimumFractionDigits:2];
[formatter setMaximumFractionDigits:2];
[formatter setGroupingSize:3];
但是,我想修改它,以便它不会显示100,000或更高值的小数位。如果没有创建另一个格式化程序,这可能吗?
答案 0 :(得分:2)
如果要截断大数字的十进制值(打印 324,329 而不是 324,329.12 ),可以执行以下操作。
在NSNumberFormatter
(新文件> Objective-C类别)上创建一个类别,我称之为TruncateHigh
。这将创建两个文件NSNumberFormatter+TruncateHigh.h
和NSNumberFormatter+TruncateHigh.m
。
NSNumberFormatter + TruncateHigh.h:
#import <Foundation/Foundation.h>
@interface NSNumberFormatter (TruncateHigh)
- (NSString *)customStringFromNumber:(NSNumber *)number;
@end
NSNumberFormatter + TruncateHigh.m:
#import "NSNumberFormatter+TruncateHigh.h"
@implementation NSNumberFormatter (TruncateHigh)
- (NSString *)customStringFromNumber:(NSNumber *)number {
if (number.floatValue > 100000) {
[self setMaximumFractionDigits:0];
} else {
[self setMaximumFractionDigits:2];
}
return [self stringFromNumber:number];
}
@end
在YourViewController.m中的用法:
#import "YourViewController.h"
#import "NSNumberFormatter+TruncateHigh.h"
@implementation YourViewController
- (void)viewDidLoad
{
[super viewDidLoad];
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setGroupingSize:3];
NSNumber *smallNumber = [NSNumber numberWithFloat:12386.43];
NSNumber *bigNumber = [NSNumber numberWithFloat:8567386.43];
NSLog(@"Small Number : %@", [formatter customStringFromNumber:smallNumber]);
NSLog(@"Big Number : %@", [formatter customStringFromNumber:bigNumber]);
}
@end
这是日志:
test[7050:11303] Small Number : 12,386.43
test[7050:11303] Big Number : 8,567,386
这将打印小于100000的数字,带有2个十进制数字,数字更大,没有小数值。您可以自定义代码,使其完全按照您的意愿工作。
如果遗漏了某些东西,请告诉我。