2

例如,我有浮点值,例如:

0.2 1.5 2.0 3.0 10.0 52.5 60.0

在任何情况下,我真的想要一个小数。即使数字正好是 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

我无法使用madmi3解决方案,因为我需要动态设置 NSNumberFormatter 的语言环境。

所以最终使用了以下解决方案:

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 回答