Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.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
Javascript CAD货币的数字格式不正确_Javascript_Currency - Fatal编程技术网

Javascript CAD货币的数字格式不正确

Javascript CAD货币的数字格式不正确,javascript,currency,Javascript,Currency,我使用的是Intl.NumberFormat,当我使用英语语言环境将货币设置为CAD时,我得到的是CA$5.00。我以为符号会是$或Can$或C$或CAD,我只是扔了一支简单的代码笔 我是做错了什么,还是什么都没做错?感谢您,Javascript引擎V8使用ICU进行货币(和其他语言环境)格式设置。 ICU使用CLDR。在cldr中,我们有一个已定义的备选名称列表。 因此,当我们将locale设置为US(en_US)并且我们想要美元时,符号是$。但对于同一地区,我们可以得到不同的美元,因此为了区

我使用的是
Intl.NumberFormat
,当我使用英语语言环境将货币设置为CAD时,我得到的是
CA$5.00
。我以为符号会是
$或Can$或C$或CAD
,我只是扔了一支简单的代码笔


我是做错了什么,还是什么都没做错?感谢您,Javascript引擎V8使用ICU进行货币(和其他语言环境)格式设置。 ICU使用CLDR。在cldr中,我们有一个已定义的备选名称列表。 因此,当我们将locale设置为US(
en_US
)并且我们想要美元时,符号是$。但对于同一地区,我们可以得到不同的美元,因此为了区分它,CDLR返回不同的符号。同样,如果您将区域设置为
en\u CA
,将货币设置为
CAD
,那么我们将得到符号
$
,因为加拿大人将加元称为美元(这里毫不奇怪:)),对于
locale='en CA',currency='USD',我们将得到1.00美元

CLDR中有几种可选的美元符号(AUD-A$、BRL-R$和其他一些)

此外,如果我们检查文档中的 当前显示选项可以是
符号
代码
名称
。如果您通过
code
您将获得
CAD 1.00
,如果您通过
symbol
您将获得
CA$1.00


TLDR;Js使用ICU,该ICU使用CDLR为您的病例返回
CA$

您期望什么?请注意,如果更改区域设置,则显示的格式化价格将更改。(例如,试试en-CA和fr-CA)我期望的是C$5.00或Can$5.00。我注意到格式发生了变化,但我认为对于使用en US的CAD,格式是错误的,所以要获得100加元,我应该为语言环境和货币设置什么?我设置了locale='en-CA'和currency='CAD',我只得到100美元。提前谢谢。我现在不知道这是否可行。如果“CA$100”足够,您可以将区域设置设置为“en US”
const price = 5,
  locale = 'en-US',
  currency = 'CAD';

const formatter = new Intl.NumberFormat (locale, {
  style: 'currency',
  currency: currency,
});

const formattedPrice = formatter.format (price);