【问题标题】:How to make a number have proper comma formatting AND round to exactly 2 decimals every time in Javascript? [duplicate]如何使数字具有正确的逗号格式并且每次在 Javascript 中都精确到 2 位小数? [复制]
【发布时间】:2021-03-12 02:27:33
【问题描述】:

我正在制作货币转换器,我希望结果具有正确的逗号格式以及始终四舍五入到两位小数。

例如,如果我的号码是 1000000.3,我希望结果是 1,000,000.30。

我有什么遗漏的吗?我对编码非常陌生,因此我们将不胜感激!

编辑:没有看到堆栈溢出提供了运行代码的选项,因此您可以将其复制并粘贴到代码编辑器中或在此处打开代码:https://xrpalerts.000webhostapp.com/testing.html

<!DOCTYPE html>
<html>
<body>

<script>

var CalculatorResult = 1000000.3

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

var CalculatorResultFixed = parseFloat(CalculatorResult).toFixed(2);
var CalculatorResultFixedLocale = parseFloat(CalculatorResultFixed).toLocaleString("us-EN");


function ClickAllResults() {

    document.write("CalculatorResultLocale: ");
    document.write(CalculatorResultLocale);
    document.write("<br>");

    document.write("CalculatorResultLocaleFixed: ");
    document.write(CalculatorResultLocaleFixed);
    document.write("<br>");
    document.write("<br>");

    document.write("CalculatorResultFixed: ");
    document.write(CalculatorResultFixed);
    document.write("<br>");

    document.write("CalculatorResultFixedLocale: ");
    document.write(CalculatorResultFixedLocale);
    document.write("<br>");
}
</script>

<button onclick="ClickAllResults()" id = "button"><strong>Click to see all results</strong></button>

</body>
</html>

【问题讨论】:

标签: javascript currency cryptocurrency money-format


【解决方案1】:

要按小数位显示 toLocaleString,请使用

.toLocaleString("us-EN", { minimumFractionDigits: 2, maximumFractionDigits: 2 })

你的代码会是这样的

var CalculatorResultFixedLocale = parseFloat(CalculatorResultFixed).toLocaleString("us-EN", { minimumFractionDigits: 2, maximumFractionDigits: 2 });

【讨论】:

    【解决方案2】:
    <!DOCTYPE html>
    <html>
    <body>
    
    <script>
    
    var CalculatorResult = 1000000.3
    var CalculatorResultMoney = currencyFormat(CalculatorResult);
    
    function ClickAllResults() {
        document.write("CalculatorResultMoney: ");
        document.write(CalculatorResultMoney);
        document.write("<br>");
    }
    
    function currencyFormat(num) {
      let a = '$' + num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')
      return a;
    }
    </script>
    
    <button onclick="ClickAllResults()" id = "button"><strong>Click to see all results</strong></button>
    
    </body>
    </html>
    

    我确实找到了与您的要求类似的功能 https://blog.abelotech.com/posts/number-currency-formatting-javascript/

    function currencyFormat(num) {
      let a = '$' + num.toFixed(2).replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,')
      return a;
    }
    

    【讨论】:

      【解决方案3】:

      function numberWithCommas(x) {
          return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
      }
      
      const round = (value, decimals) => {
        return numberWithCommas(Number(Math.round(value + 'e' + decimals) + 'e-' + decimals).toFixed(2));
      };
      
      console.log(round(84347.336, 2)); // 84,347.34 
      console.log(round(8557.332, 2)); // 8,557.33 
      console.log(round(187, 2)); // 187.00

      toFixed() 方法使用定点表示法格式化数字。

      【讨论】:

      • 对不起,错过了那部分,现在我更新了答案@Ouroborus,请检查
      【解决方案4】:

      //execute below function
      
      CommaFormatted('2345643.123')
      
      //result => 2,345,643.123
      
      function CommaFormatted(amount) {
          var delimiter = ","; // replace comma if desired
          var a = amount.split('.',2)
          var d = a[1];
          var i = parseInt(a[0]);
          if(isNaN(i)) { return ''; }
          var minus = '';
          if(i < 0) { minus = '-'; }
          i = Math.abs(i);
          var n = new String(i);
          var a = [];
          while(n.length > 3) {
              var nn = n.substr(n.length-3);
              a.unshift(nn);
              n = n.substr(0,n.length-3);
          }
          if(n.length > 0) { a.unshift(n); }
          n = a.join(delimiter);
          if(d.length < 1) { amount = n; }
          else { amount = n + '.' + d; }
          amount = minus + amount;
          return amount;
      }

      请参考 CSS 技巧文章https://css-tricks.com/snippets/javascript/comma-values-in-numbers/#:~:text=Javascript%20has%20a%20method%20called,will%20convert%20it%20to%2012%2C345%2C678.90

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-15
        • 2015-07-18
        • 2013-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多