4

我尝试通过以下方式输出具有正确小数分隔符的十进制数的描述:

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

输出是:

de_DE
9.943

小数点分隔符应该是 ',' 而不是 '.' 对于这个语言环境。错误在哪里?如何根据本地输出正确的小数分隔符?

4

2 回答 2

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

输出为:9,943

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

于 2012-02-02T06:43:11.553 回答
1

你可以使用这个:

NSLocale *locale = [NSLocale currentLocale];

float r = 50/100;

NSString *str = [NSString stringWithFormat:@"%.2f%%", r];
str = [str stringByReplacingOccurrencesOfString:@"." withString:[locale objectForKey: NSLocaleDecimalSeparator]];

有效!

于 2012-08-06T04:40:33.453 回答