Iphone 如何格式化一个数字,使其始终有一个小数位数?

Iphone 如何格式化一个数字,使其始终有一个小数位数?,iphone,nsnumberformatter,Iphone,Nsnumberformatter,例如,我有如下浮点值: 0.2 1.5 2 3 10 52.5 60.0 在任何情况下,我都想要一个小数位数。即使数字正好是1,我也希望它显示为1.0 我试图设置这样的NSNumberFormatter,但它不起作用: NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [formatter setAlwaysShowsDecimalSeparator:NO]; [formatter setAllowsFloats:Y

例如,我有如下浮点值:

0.2 1.5 2 3 10 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无法做到的吗?

试试这个

NSString*f=[NSString stringWithFormat:@“%.01f”,(浮点)10]

设置始终显示CIMALSEPARATOR: 控制接收器是否始终显示十进制分隔符,即使对于整数也是如此

尝试将此设置为“是”

我无法使用解决方案,因为我需要动态设置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);

它将强制使用十进制分隔符,但不能确保分隔符后始终有一个小数位数。。。它会产生类似10的东西。或者15岁。但不是10.0或15.5…不确定我是否理解,但如果你在一个逗号us用于。它应该很好用@openfrog使用“localizedStringWithFormat”来本地化十进制分隔符