6

我有一个浮点数,我想显示到小数点后一位。例如 104.8135674... 在英文中显示为 104.8。通常我会使用:

myString = [NSString stringWithFormat:@"%.1f",myFloat];

但是,我想本地化号码,所以我尝试了:

myString = [NSString localizedStringWithFormat:@"%.1f",myFloat];

这可以分配正确的十进制符号(例如

英语:104.8

德语:104,8

但是,对于使用不使用阿拉伯数字(0123456789) 的语言,将使用正确的十进制符号,但数字仍为阿拉伯数字。例如

巴林-阿拉伯语:104,8(数字应使用不同的符号)

所以我尝试了:

myString = [NSNumberFormatter localizedStringFromNumber:[NSNumber numberWithFloat:myFloat] numberStyle:kCFNumberFormatterDecimalStyle];

但是,我似乎无法指定小数位数。它给出了例如

英语:104.813

4

1 回答 1

12

NSNumberFormatter-setMaximumFractionDigits:用于此目的,您可以重用非常好的格式化程序:

NSNumberFormatter * formatter =  [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:kCFNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:1];
[formatter setLocale:[NSLocale currentLocale]];
NSString * myString = [formatter stringFromNumber:[NSNumber numberWithFloat:123.456]];
于 2012-07-16T12:16:22.653 回答