例如,我有浮动值,如:
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无法做到的吗?
答案 0 :(得分:2)
<强> setAlwaysShowsDecimalSeparator:强> 控制接收器是否始终显示小数分隔符,即使对于整数也是如此。
尝试将此设置为YES
答案 1 :(得分:1)
试试这个吗?
NSString * f = [NSString stringWithFormat:@“%。01f”,(float)10];
答案 2 :(得分: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);