大きな数値の 10 進値を切り捨てたい場合 ( 324,329.12の代わりに324,329を出力する)、次のことができます。
NSNumberFormatter
(New File > Objective-C Category) でカテゴリを作成し、 mine と呼びましたTruncateHigh
。NSNumberFormatter+TruncateHigh.h
これにより、との 2 つのファイルが作成されます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 つの 10 進数で出力され、100000 より大きい数値は 10 進数値なしで出力されます。コードをカスタマイズして、必要に応じて正確に機能させることができます。
何か不足している場合はお知らせください。