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

use*_*337 1 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;
}
Run Code Online (Sandbox Code Playgroud)

gdo*_*ica 5

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

parseInt(obj[i].value*1)
Run Code Online (Sandbox Code Playgroud)

parseInt => parseFloat

parseInt给你一个自然的号- ň同时parseFloat给你一个真实的号- [R .

顺便说一句,当你多个数字x一个你得到相同的x数,所以我认为你的计算器可以跳过它...

parseInt(obj[i].value*1) => parseFloat(obj[i].value)
Run Code Online (Sandbox Code Playgroud)