JS实现输入框与计算结果的千分位、小数分隔符(点、逗号)格式化
实现方案
你需要的是「千位分隔符为点、小数分隔符为逗号,固定保留2位小数」的数字格式,直接用JavaScript原生的Intl.NumberFormat国际化API就能实现,不需要复杂的正则处理,修改后的完整JS代码如下:
calculate = function() { // 先把输入值转为数字类型 var peso = parseFloat(document.getElementById('peso').value); var altezza = parseFloat(document.getElementById('altezza').value); // 增加输入有效性校验,避免出现非数字结果 if (isNaN(peso) || isNaN(altezza)) { alert('请输入有效的数值'); return; } var bmruomo = peso * altezza; // 按要求格式化数字 const formattedResult = new Intl.NumberFormat('de-DE', { minimumFractionDigits: 2, maximumFractionDigits: 2 }).format(bmruomo); document.getElementById('bmruomo').value = formattedResult; } function resetFields(){ var inputArray = document.querySelectorAll('input'); inputArray.forEach(function (input){ input.value = ""; }); }
效果验证
- 输入50和50计算,输出结果为
2.500,00,符合需求 - 输入52.5和52.5计算,输出结果为
2.756,25,符合需求
补充说明
Intl.NumberFormat是JS原生提供的国际化数字格式化API,不需要引入任何第三方库:
- 第一个参数
de-DE是地区标识,德国地区的数字格式规则刚好是千位用点分隔、小数位用逗号分隔,匹配你的需求 - 后面的配置项强制保留2位小数,避免出现小数位不足的情况
内容的提问来源于stack exchange,提问作者Snake93
相关产品推荐
相关产品推荐

