我试图用以下方式输出带有正确小数分隔符的十进制数字的描述:
NSString* strValue = @"9.94300";
NSDecimalNumber* decimalNumber = [NSDecimalNumber decimalNumberWithString: strValue];
NSLocale* locale = [NSLocale currentLocale];
NSLog(@"%@", [locale localeIdentifier]);
NSLog(@"%@", [decimalNumber descriptionWithLocale: locale] );
输出结果为:
de_DE
9.943
小数点分隔符应为','而不是'。'对于这种语言环境。错误在哪里?如何根据本地输出正确的小数分隔符?
答案 0 :(得分:3)
@TriPhoenix:是的我正在运行iOS 5.
@Vignesh:非常感谢你。如果我将iPhone语言设置为德语,则以下代码现在可以使用:
NSString* strValue = @"9.94300";
NSDecimalNumber* decimalNumber = [NSDecimalNumber decimalNumberWithString: strValue];
NSNumberFormatter* numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setFormatterBehavior: NSNumberFormatterBehavior10_4];
[numberFormatter setNumberStyle: NSNumberFormatterDecimalStyle];
NSLog(@"%@", [numberFormatter stringFromNumber: decimalNumber] );
输出是: 9943
但现在我有另一个问题。如果我将iPhone语言切换回英语,输出仍然是9,943而不是9.943。我做错了吗?
答案 1 :(得分:1)
您可以使用:
NSLocale *locale = [NSLocale currentLocale];
float r = 50/100;
NSString *str = [NSString stringWithFormat:@"%.2f%%", r];
str = [str stringByReplacingOccurrencesOfString:@"." withString:[locale objectForKey: NSLocaleDecimalSeparator]];
有效!