jQuery - 带有一些数字的表格计算出现奇怪的舍入错误
jQuery - Strange rounding error with table calculations with some numbers
我有一个简单的表格,允许用户输入 2 个数字,然后脚本计算年平均值并获取在选择菜单中具有相同选项的所有行的总计。
我已经设置了一个示例JSFiddle:
http://jsfiddle.net/fmdataweb/73Jzc/1/
这显示了它是如何工作的。我刚刚注意到有时我会收到一个奇怪的舍入错误(我希望它四舍五入到小数点后一位)。例如,如果您选择"中等",然后输入 5 和 4 表示平均值为 0.4,然后单击按钮创建新行并再次选择"中等",然后输入 3 和 40 表示平均值为 2.3,您会注意到中等值的总数是"2.699999999999999997",而它应该是 2.7。
如果您输入其他数字,到目前为止在我的测试中还可以,但由于某种原因,这些组合不会四舍五入为总数,我不确定为什么。如果有人可以指出我的脚本中的错误,请不胜感激。下面是执行平均值和总计的脚本:
$('#nextYear')
.on('change', 'select', calc)
.on('keyup', 'input', calc);
function calc(){
$('#nextYear tr:has(.risk)').each(function(i,v){
var $cel = $(v.cells);
var $risk = $cel.eq(1).find('option:selected').val();
var $numb = $cel.eq(2).find('input').val();
var $weeks = $cel.eq(3).find('input').val();
var $avg = ($numb * $weeks) / 52;
var $avgRounded = Math.round( $avg * 10 ) / 10;
$cel.eq(4).find('input').val($avgRounded);
});
var tot = {};
$('#nextYear tr:has(.risk) option:selected')
.map(function(i){
var el = $(this).val();
var qty = parseFloat($('#nextYear tr:has(.risk)').eq(i).find('td:last').prev().find('input').val());
if (!tot.hasOwnProperty(el)) {
tot[el] = 0;
}
tot[el] += qty
return tot;
}).get();
// console.log(tot);
$('#textfield6').val(tot.moderate);
$('#textfield7').val( tot.high );
}
你的问题在这里:
$('#textfield6').val(tot.moderate);
$('#textfield7').val( tot.high );
你必须像你所做的那样对它们进行四舍五入
var $avgRounded = Math.round( $avg * 10 ) / 10;
或使用.toFixed(1)
编辑:
然后,代码为:
$('#textfield6').val(tot.moderate.toFixed(1));
$('#textfield7').val(tot.high.toFixed(1));
你可以在这里看到它:http://jsfiddle.net/73Jzc/2/
尝试$avg.toFixed(1);
而不是Math.round( $avg * 10 ) / 10;
相关文章:
- 浮点0.2+0.1舍入误差
- 谷歌材料图表:停止工具提示舍入
- jQuery - 带有一些数字的表格计算出现奇怪的舍入错误
- 有人可以详细解释这个 JavaScript 十进制舍入函数吗?
- 求和值时出现Javascript舍入问题
- 在追加文本中舍入数字输出
- Infrastics网络货币编辑舍入问题
- Javascript中的自定义舍入数
- 通过JavaScript将数字舍入到0.11的最接近倍数
- 是否可以在 JavaScript 中实现没有舍入问题的任意精度算术
- JavaScript 中的舍入问题
- 如何在不向上舍入的情况下删除尾随小数
- 适用于 IE8 的子像素舍入 JavaScript/jQuery 解决方案,用于具有百分比宽度的表格单元格
- JQuery 淡入/淡出错误 - 淡入到正常工作
- 十进制值会自动舍入
- 将浮点数向上舍入到 javascript 中的下一个整数
- 翻译的JavaScript中出现舍入错误
- IEEE 754浮点算术舍入错误在c#和javascript
- 将XLS转换为javascript舍入错误
- 这是一种可靠的方法来处理Javascript中浮点数相乘时的舍入错误吗