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