如何在JavaScript中将数值格式化为保留两位小数?
实现计算结果保留两位小数的方案
针对你提供的选项转移计算代码,要实现小数保留两位,可通过以下几种方式修改,同时先修正原代码里的两个问题:
- 移除操作中误用
parseInt会丢失小数部分,需统一换成parseFloat - 移除操作里重复执行减法,且
$(this).remove()后再取值会失效,需先缓存要移除的数值
方案一:使用toFixed(2)(推荐,自动补零+四舍五入)
toFixed(2)会将数值四舍五入后保留两位小数,返回字符串格式,刚好适配输入框的文本值需求,同时自动处理末尾补零(比如结果为3时会显示3.00)。
修改后的完整代码:
<script type="text/javascript"> $(document).ready(function() { $('#btn-add').click(function(){ $('#select-from option:selected').each( function() { $('#select-to').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>"); // 处理初始值为空的情况,默认取0 const currentTotal = parseFloat($("input[name='class']").val()) || 0; const addValue = parseFloat($(this).val()); // 计算后保留两位小数 $("input[name='class']").val((currentTotal + addValue).toFixed(2)); }); }); $('#btn-remove').click(function(){ $('#select-to option:selected').each( function() { // 先缓存要移除的数值,避免remove后无法获取 const removeValue = parseFloat($(this).val()); $('#select-from').append("<option value='"+$(this).val()+"'>"+$(this).text()+"</option>"); $(this).remove(); const currentTotal = parseFloat($("input[name='class']").val()) || 0; const newTotal = currentTotal - removeValue; // 保留两位小数,若结果为负数可根据需求处理(比如设为0) $("input[name='class']").val(newTotal.toFixed(2)); }); }); }); </script>
方案二:使用Math.round手动控制(适合需数值运算场景)
如果后续需要对结果做数值运算,可先通过Math.round四舍五入,再转换为字符串,缺点是整数结果不会自动补零(比如3会显示3而不是3.00):
// 添加操作的计算行替换为 $("input[name='class']").val((Math.round((currentTotal + addValue) * 100) / 100).toString()); // 移除操作的计算行替换为 $("input[name='class']").val((Math.round(newTotal * 100) / 100).toString());
内容的提问来源于stack exchange,提问作者boufier
相关产品推荐
相关产品推荐

