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>

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>

您可以使用以下代码段:

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

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

最新更新