本地化浮动并指定iOS中的小数位数

我有一个浮点数,我想显示在一个小数位。 例如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

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]];