iOS中有NSDecimalNumber的错误十进制分隔符

我试图用下面的方式输出正确的小数点分隔符的十进制数的描述:

NSString* strValue = @"9.94300"; NSDecimalNumber* decimalNumber = [NSDecimalNumber decimalNumberWithString: strValue]; NSLocale* locale = [NSLocale currentLocale]; NSLog(@"%@", [locale localeIdentifier]); NSLog(@"%@", [decimalNumber descriptionWithLocale: locale] ); 

输出是:

 de_DE 9.943 

小数点分隔符应该是','而不是'。' 为这个地方。 错误在哪里? 如何输出正确的小数点分隔符取决于本地?

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

产出是:9,943

但现在我有另一个问题。 如果我将iPhone语言切换回英文,输出仍然是9,943,而不是9.943。 我做错了什么?

你可以使用这个:

 NSLocale *locale = [NSLocale currentLocale]; float r = 50/100; NSString *str = [NSString stringWithFormat:@"%.2f%%", r]; str = [str stringByReplacingOccurrencesOfString:@"." withString:[locale objectForKey: NSLocaleDecimalSeparator]]; 

有效!