如何在JavaScript中使用toLocaleString()和tofixed(2)

How to use toLocaleString() and tofixed(2) in JavaScript

本文关键字:tofixed toLocaleString JavaScript      更新时间:2023-09-26

如何在JavaScript中做到这一点?

var num = 2046430; 
num.toLocaleString();
will give you "2,046,430";

我试过的是:

var num = 2046430; 
num.toLocaleString().toFixed(2);

期望输出

" 2046430 "

摘自MDN:

语法

numObj.toLocaleString([locales [, options]])

toLocaleString接受2个参数。第一个是区域设置,第二个是选项。至于选项,您要查找的是:

minimumFractionDigits

要使用的最小分数位数。取值范围为0 ~ 20;默认为普通数字和%格式化为0;默认的货币格式是由ISO 4217货币代码提供的小单位位数列表(如果列表不提供该信息则为2)。

https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString

为了能够在不设置语言环境的情况下设置选项,可以将undefined作为第一个参数传递:

var num = 2046430;
num.toLocaleString(undefined, {minimumFractionDigits: 2}) // 2,046,430.00

然而,这也允许分数长度大于2位。所以我们需要再找一个叫做maximumFractionDigits的选项。(同样在MDN页面)

var num = 2046430.123;
num.toLocaleString(undefined, {
  minimumFractionDigits: 2,
  maximumFractionDigits: 2
}) // 2,046,430.12

我来这里是因为我想在结果中显示货币符号(R$)并在小数点后显示两位数字。

最初,我尝试以下代码:

`Amount ${(gas * litros).toFixed(2)
  .toLocaleString('pt-BR', {style: 'currency', currency: 'BRL'})}`

期望输出:Total a pagar R$ 20.95

输出:Total a pagar 20.95

因此,根据上面的答案,我尝试不使用toFixed():

`Total a pagar ${(gas * litros)
    .toLocaleString('pt-BR', {style: 'currency', currency: 'BRL', minimumFractionDigits: 2})}`

输出:总pagar R $ 15日80

@Sebastian Nette接受的答案是,由于某种原因不适合我处理像"1,230.05"这样的数字,它是一个带逗号的字符串。

我最终选择了以下内容:

var num = "1,230.05";
parseFloat(num.replace(",", "")).toFixed(2);

在解析为浮点数并运行toFixed()之前,它只是手动去除逗号。