本地化一个浮点数并指定iOS中的小数位数

时间:2012-07-16 11:49:59

标签: ios cocoa-touch floating-point nsstring nslocalizedstring

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

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

但是,我想将数字本地化,所以我尝试了:

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

这适用于分配正确的小数符号(例如

英语:104.8

德语:104,8

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

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

所以我试过了:

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

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

英语:104.813

1 个答案:

答案 0 :(得分:11)

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