如何使带有适当逗号的数字四舍五入到小数点后两位?

How to make a number with proper commas round to exactly 2 decimal places?

在我的代码中,我正在尝试使用 Javascript 转换不同货币的计算器。我希望最终结果采用美国形式的适当逗号形式,例如,如果数字为 1000000.3,我希望它显示为 1,000,000.30

我试过使用 toFixed、toLocaleString 和 parseFloat,使用 toFixed 舍入到小数点后两位,使用 toLocaleString 进行正确的逗号格式设置,使用 parseFloat 将 toFixed 和 toLocaleString 转换为数字,以便它们可以在彼此。

问题是,当我使用 toFixed 然后使用 toLocaleString 时,toFixed 会使原始数字变成 1000000.30,但是 toLocaleString 会去掉最后一个 0,从而使最终结果变成 1,000,000.3。或者,当我尝试颠倒顺序并使用 toLocaleString 然后使用 toFixed 时,toLocaleString 使它成为 1,000,000.3,但随后 toFixed 将第一个逗号视为小数,使最终结果成为 1,000 而不是 1,000,000.30。有什么我遗漏的或我不知道的不同策略吗?我对编码很陌生,所以欢迎所有建议:)

(下面代码的输出可以在这里看到:https://xrpalerts.000webhostapp.com/testing_ground.html

<!DOCTYPE html>
<html>
<body>

<script>

var CalculatorResult = 1000000.3
var CalculatorResultLocale = parseFloat(CalculatorResult).toLocaleString("us-EN");
var CalculatorResultLocaleFixed = parseFloat(CalculatorResultLocale).toFixed(2);

document.write(CalculatorResultLocale);
</script>
<br>

<script>
document.write(CalculatorResultLocaleFixed);
</script>
<br>
<br>
<script>
var CalculatorResultFixed = parseFloat(CalculatorResult).toFixed(2);
var CalculatorResultFixedLocale = parseFloat(CalculatorResultFixed).toLocaleString("us-EN");

document.write(CalculatorResultFixed);
</script>
<br>
<script>
document.write(CalculatorResultFixedLocale);
</script>



</body>
</html>

你可以这样做

var formatter = new Intl.NumberFormat('en-US', {
  style: 'currency',
  currency: 'USD',
});
var num1 = 1000000.3
console.log(formatter.format(num1))