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]];
有效!