javascript - 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>
推荐阅读
- python - 如何从解析的文本中获得查询的答案?
- linux - 是否有“我是谁”和“登录名”的简单替代方法?
- apache-flink - 如何使用 Apache Flink Table API 对整个表进行排序
- json - Neo4j:循环从 Cypher 中的 apoc.load.json 生成的地图
- git - 如何在 git 中创建 SSH 密钥
- swift - CoreData:我可以在搜索时对 FetchRequest 结果执行方法吗?
- elasticsearch - Elasticsearch:向现有文档添加新字段
- elasticsearch - 获取按指定比例匹配不同词条的用户列表
- javascript - 如何使用浏览器返回功能关闭图层?
- tensorflow - 有没有标准的方法来优化模型以在不同的移动设备上运行良好?