2

たとえば、次のようなfloat値があります。

0.2 1.5 2.0 3.0 10.0 52.5 60.0

どんな状況でも、私は本当に1つの小数桁が欲しいです。数字がちょうど1であっても、1.0と表示したいのですが。

このようにNSNumberFormatterを設定しようとしましたが、機能しません。

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setAlwaysShowsDecimalSeparator:NO];
[formatter setAllowsFloats:YES];
[formatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[formatter setMinimumFractionDigits:1];

[formatter setUsesSignificantDigits:YES];
[formatter setMinimumSignificantDigits:2];

[formatter setNumberStyle:kCFNumberFormatterDecimalStyle];

0.2、5.0、5.5、9.0、

しかし、10に達すると、10、10.3、11、11.9、15、...などと表示されます。これはNSNumberFormatterではできないことですか?

4

3 に答える 3

2

setAlwaysShowsDecimalSeparator: 整数の場合でも、レシーバーが常に小数点を表示するかどうかを制御します。

これをYESに設定してみてください

于 2010-09-27T23:43:42.030 に答える
1

これを試して?

NSString * f = [NSString stringWithFormat:@ "%。01f"、(float)10];

于 2010-09-27T20:50:44.060 に答える
0

NSNumberFormatterのロケールを動的に設定する必要があるため、madmi3ソリューションを使用できませんでした。

したがって、次のソリューションを使用することになりました。

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.alwaysShowsDecimalSeparator = YES; // This will produce results like 10. for intergers
formatter.maximumFractionDigits = 1;
formatter.locale = [NSLocale localeWithLocaleIdentifier:@"pt"]; // I get this locale dinamically

NSString *formattedNumber = [formatter stringFromNumber:[NSNumber numberWithInteger:10]];

//Check this formattedNumber is ending with the separator
//If so, then append one more 0.
if ([formattedNumber hasSuffix:[formatter.locale objectForKey:NSLocaleDecimalSeparator]])
{
    formattedNumber = [formattedNumber stringByAppendingString:@"0"];
}

NSLog(@"%@", formattedNumber);
于 2014-12-05T22:47:21.477 に答える