如何修复计算两个十进制误差的总和

时间:2013-03-02 17:28:39

标签: javascript calculator calculated-columns

这个函数是用动态表计算借方数的总和,问题是,它计算2.6 + 2.1 = 4.00,我希望答案是4.70,但它没有指望两位小数

function debitvalues() {
    var debittotal = 0;
    var obj = document.getElementsByTagName("input");
    for (var i = 0; i < obj.length; i++) {
        if (obj[i].name == "debit[]") {
            if (obj[i].value > 0) {
                debittotal += parseInt(obj[i].value * 1);
            } else {
                obj[i].value = 0;
                debittotal += parseInt(obj[i].value * 1);
            }
        }
    }
    document.getElementById("debittotal").value = (debittotal * 1).toFixed(2);
    debittotal = 0;
}

1 个答案:

答案 0 :(得分:5)

您需要解析为int时解析为float

parseInt(obj[i].value*1)

parseInt =&gt; parseFloat

parseInt为您提供自然数字 N ,而parseFloat为您提供实数 - R

顺便说一句,当你将一个数字 - x 加倍时,得到的数字非常相同,所以我认为你的计算器可以跳过它...

parseInt(obj[i].value*1) => parseFloat(obj[i].value)