繁体   English   中英

iOS中的NSDecimalNumber错误的小数点分隔符

[英]wrong decimal separator with NSDecimalNumber in iOS

我尝试使用正确的小数分隔符以下列方式输出十进制数的描述:

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

有效!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM