Objective c NSNumberFormatter错误结果
结果:0.89欧元 预期结果:Objective c NSNumberFormatter错误结果,objective-c,nsnumberformatter,Objective C,Nsnumberformatter,结果:0.89欧元 预期结果:0,89欧元 无论setFormatterBehavior值是多少,结果都是一样的。是什么让你认为这个结果是错误的 货币指示器的位置和符号不仅取决于货币,还取决于区域设置 我将举一个例子,让我们看看货币代码EUR(欧元)。 现在尝试使用设置为en_US(英语,美国)和cs_CZ(捷克,捷克共和国)的语言环境格式化金额。您将分别获得0.89欧元和0.89欧元 即使符号也可以更改,让我们用货币代码CZK(捷克克朗)试试——你会得到 CZK分别为0.89和0,89 Kc
0,89欧元
无论setFormatterBehavior值是多少,结果都是一样的。是什么让你认为这个结果是错误的 货币指示器的位置和符号不仅取决于货币,还取决于区域设置 我将举一个例子,让我们看看货币代码
EUR
(欧元)。
现在尝试使用设置为en_US
(英语,美国)和cs_CZ
(捷克,捷克共和国)的语言环境格式化金额。您将分别获得0.89欧元和0.89欧元
即使符号也可以更改,让我们用货币代码CZK(捷克克朗)试试——你会得到
CZK分别为0.89
和0,89 Kc
考虑到区域设置和货币代码,您的结果可能是绝对正确的
编辑:
产出:
NSLocale* locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_BG"] autorelease];
NSLog(@"%@", [locale objectForKey:NSLocaleCurrencyCode]);
NSLog(@"%@", [locale objectForKey:NSLocaleDecimalSeparator]);
如您所见,区域设置已正确初始化,区域设置为保加利亚(本地货币代码为BGN),语言设置为英语(小数点分隔符为点)。请注意,数字格式不是从区域设置的。它是由语言设定的
因此,问题不在于NSNumberFormatter的结果,问题在于您的预期,这是错误的。是什么让您认为这个结果是错误的 货币指示器的位置和符号不仅取决于货币,还取决于区域设置 我将举一个例子,让我们看看货币代码
EUR
(欧元)。
现在尝试使用设置为en_US
(英语,美国)和cs_CZ
(捷克,捷克共和国)的语言环境格式化金额。您将分别获得0.89欧元和0.89欧元
即使符号也可以更改,让我们用货币代码CZK(捷克克朗)试试——你会得到
CZK分别为0.89
和0,89 Kc
考虑到区域设置和货币代码,您的结果可能是绝对正确的
编辑:
产出:
NSLocale* locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"en_BG"] autorelease];
NSLog(@"%@", [locale objectForKey:NSLocaleCurrencyCode]);
NSLog(@"%@", [locale objectForKey:NSLocaleDecimalSeparator]);
如您所见,区域设置已正确初始化,区域设置为保加利亚(本地货币代码为BGN),语言设置为英语(小数点分隔符为点)。请注意,数字格式不是从区域设置的。它是由语言设定的
因此,问题不在于NSNumberFormatter的结果,而在于您的预期,这是错误的。使用locale-
en_BG@currency=欧元
,预期结果为0.89€
,但为什么货币符号不在价格之后?使用此区域设置检查应用商店中的价格标签-价格格式必须相同。但为什么货币符号不在价格之后代码>美国地区。负价格会发生什么情况?结果是:(€123.00)
带有负数和区域设置-en_BG@currency=欧元
,预期结果为0.89€
,但为什么货币符号不在价格之后?使用此区域设置检查应用商店中的价格标签-价格格式必须相同。但为什么货币符号不在价格之后代码>美国地区。负价格会发生什么?结果是:(€123.00)
带负数
BGN
.