首页 > 解决方案 > toLocaleString() 不将数字格式化为欧洲格式

问题描述

我正在尝试将给定数字格式化为欧洲格式。但是,我只得到美国/英国格式的结果。

这是我的代码:

static async formatCurrency(numberIn: number, currencyIndicator: string) {
        if(currencyIndicator=='EUR') {
            console.log(numberIn.toLocaleString('es-ES', { minimumFractionDigits: 2 , style: 'currency', currency: 'EUR'}));
            console.log(Number(numberIn).toLocaleString("de-DE", {minimumFractionDigits: 2}));
        }
}
await formatCurrency(12345678.00,"EUR");

这是我的输出:

€12,345,678.00

12,345,678.00

我期待的输出是:

€12.345.678,00

12.345.678,00

标签: javascriptnode.jstypescript

解决方案


我尝试安装 full-icu 并将其导入我的班级。使用此代码,我仍然没有得到想要的结果:

            formattedNumber = await new Intl.NumberFormat('nl-NL', { minimumFractionDigits: 2 , style: 'currency', currency: 'EUR'}).format(numberIn);
           
 console.log("formattedNumber is: " + formattedNumber);

这是我得到的输出:12,345,678.00 欧元。而不是 €12.345.678,00

这可能是更好的解决方案吗?

            formattedNumber = await formattedNumber.replace(/\./g, "_");
            formattedNumber = await formattedNumber.replace(/,/g, ".");
            formattedNumber = await formattedNumber.replace(/_/g, ",");
    ```

推荐阅读