代码之家  ›  专栏  ›  技术社区  ›  user13286

ToLocaleString-如果不是,只显示小数。00

  •  0
  • user13286  · 技术社区  · 7 年前

    我正在创建一个计算器,在那里我需要格式化一些数字,我正在使用 toLocaleString .我的问题是,我如何才能使它只显示小数点,如果他们是必要的(即如果数字是127.00,它将显示为127,但如果它是127.50,它将显示127.50)

    $('div').each(function() {
      $(this).text($(this).attr('data-val').toLocaleString('en', {
        minimumFractionDigits: 2,
        maximumFractionDigits: 2
      }));
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js">
    </script>
    <div data-val="127.00"></div>
    <div data-val="127.50"></div>
    3 回复  |  直到 7 年前
        1
  •  3
  •   Cjmarkham    7 年前

    这样的东西在 toLocaleString 所以我个人会选择一个显而易见的选择。有更好的选择。

    此方法将数字拆分为十进制,然后检查后面的数字是否为“00”。如果是,则将文本设置为小数点前的部分。

    这确实假定有一个小数,如果没有,它将失败。但是它很简单,可以检查 parts.length 找出是否有。

    $('div').each(function() {
      var formatted = $(this).attr('data-val').toLocaleString('en', 
        { minimumFractionDigits: 2, maximumFractionDigits: 2 }
      )
      var parts = formatted.split('.')
      if (parts.length > 1 && parts[1] === '00') {
        formatted = parts[0]
      }
      $(this).text(formatted);
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div data-val="127.00"></div>
    <div data-val="127.50"></div>
    <div data-val="127"></div>
        2
  •  1
  •   Felipe Almeida    7 年前

    您可以使用以下代码段:

    $('div').each(function() {
      var formatted = $(this).attr('data-val').toLocaleString('en', 
        { minimumFractionDigits: 2, maximumFractionDigits: 2 }
      )
      formatted = (formatted % 1 > 0) ? formatted : Math.round(formatted);
      $(this).text(formatted);
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div data-val="127.00"></div>
    <div data-val="127.50"></div>
    <div data-val="127"></div>
        3
  •  1
  •   eag845    7 年前

    如果您只想删除“.00”,可以替换它们。

    $('div').each(function() {
      $(this).text($(this).attr('data-val').toLocaleString('en', {
        minimumFractionDigits: 2, maximumFractionDigits: 2})
       .replace('.00',''));
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js">
    </script>
    <div data-val="127.00"></div>
    <div data-val="127.50"></div>
    <div data-val="127"></div>