如果要截断大数字的十进制值(打印,而不是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个小数和数字更大的,没有十进制值。您可以自定义代码以使其完全按照您的要求工作。
让我知道是否有东西丢失。
您能否为国际用户精确地指定一个“小数位”? – rdurand
你的意思是你想得到** 3,240.45 **,但是** 324,329 **而不是** 324,329.12 **? – rdurand
'formatter.usesGroupingSeparator = NO'?我同意rdurand的意见,请提供预期的语言环境。 – JFS