1

メートル単位をミリメートルで表示する必要があるアプリケーションがあり、私が行った調査に基づいています(例: http: //physics.nist.gov/cuu/pdf/sp811.pdf)。 5桁になるまで、グループ化区切り文字を追加します。これはNSNumberFormatterで可能ですか?値をテストし、そのサイズに基づいてグループ化を有効/無効にできることはわかっていますが、NSNumberFormatterが存在する場合は、適切な構成を使用したいと思います。(ところで、私はMac OS Xを使用しています)たとえば、次のようになります。

3456は3456mmとして表示されます

10234は10,234mmと表示されます(コンマがグループ化区切り文字であると想定)

Appleのドキュメントを読みましたが、何も表示されませんでした。Stackoverflowで答えを見つけるためにさまざまな検索を試しましたが、同様の質問は見つかりませんでした。

現在NSNumberFormatterを設定している方法は次のとおりです。

if (numberFormatter == nil) {
    numberFormatter = [[NSNumberFormatter alloc] init];
    [numberFormatter setRoundingMode:NSNumberFormatterRoundHalfUp];
    [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
    [numberFormatter setLocale:[NSLocale currentLocale]];
    [numberFormatter setMinimumFractionDigits:0];
    [numberFormatter setMaximumFractionDigits:2];
}

NSNumber *numberInMM = [NSNumber numberWithFloat:fLenInMMs];
NSString *numberStr = [numberFormatter stringFromNumber:numberInMM];
numberStr = [numberStr stringByAppendingString:@" mm"];
4

1 に答える 1

0
long long d = fLenInMMs;
if (d>9999) {
    NSNumberFormatter *numberFormatter=nil;
    if (numberFormatter == nil) {
        numberFormatter = [[NSNumberFormatter alloc] init];
        [numberFormatter setRoundingMode:NSNumberFormatterRoundHalfUp];
        [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
        [numberFormatter setLocale:[NSLocale currentLocale]];
        [numberFormatter setMinimumFractionDigits:0];
        [numberFormatter setMaximumFractionDigits:2];
    }

    NSNumber *numberInMM = [NSNumber numberWithFloat:fLenInMMs];
    NSString *numberStr = [numberFormatter stringFromNumber:numberInMM];
    numberStr = [numberStr stringByAppendingString:@" mm"];
    NSLog(@"%@", numberStr);
}
else {
    NSNumber *numberInMM = [NSNumber numberWithFloat:fLenInMMs];
NSString *numberStr =   [NSString stringWithFormat:@"%@ mm",numberInMM];
} 

編集

NSNumberFormatter サブクラス化して実装 することもできます

- (NSString *)stringFromNumber:(NSNumber *)number
{
    NSNumber *nm = [NSNumber numberWithInt:9999];

    if (NSOrderedAscending==[number compare:nm]) {
        return [NSString stringWithFormat:@"%@ mm",number];
    }

    return [super stringFromNumber:number];
}
于 2012-10-22T12:54:36.277 に答える