Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSNumberFormatter错误结果_Objective C_Nsnumberformatter - Fatal编程技术网

Objective c NSNumberFormatter错误结果

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欧元 预期结果:
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

.