toLocaleString-仅显示小数点,否则不显示.00

时间:2018-12-04 17:32:59

标签: javascript

我正在创建一个计算器,需要在其中格式化一些数字,这是我使用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 个答案:

答案 0 :(得分:3)

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>

答案 1 :(得分:1)

您可以使用以下代码段:

$('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>

答案 2 :(得分:1)

如果您只想删除“ .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>