1

私は次のように設定しましたNSNumberFormatter

formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMinimumFractionDigits:2];
[formatter setMaximumFractionDigits:2];
[formatter setGroupingSize:3];

ただし、100,000 以上の値の小数点以下の桁数を表示しないように修正したいと考えています。別のフォーマッタを作成せずにこれは可能ですか?

4

1 に答える 1

2

大きな数値の 10 進値を切り捨てたい場合 ( 324,329.12の代わりに324,329を出力する)、次のことができます。

NSNumberFormatter(New File > Objective-C Category) でカテゴリを作成し、 mine と呼びましたTruncateHighNSNumberFormatter+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 進数値なしで出力されます。コードをカスタマイズして、必要に応じて正確に機能させることができます。

何か不足している場合はお知らせください。

于 2013-06-27T10:21:31.277 に答える