首页 > 解决方案 > toLocaleString - 如果不是 .00,则仅显示小数

问题描述

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

标签: javascript

解决方案


没有这样的选择,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>


推荐阅读