为什么当我尝试将这些parseFloat()值相加时,我获得了连接而不是数学和?

时间:2016-01-25 16:27:56

标签: javascript jquery

我是JavaScript和jQuery的新手,我发现以下问题试图执行一个简单的总和。

所以我有以下情况:

var anticipoCalcolato = (saldoProgetto + anticipoProgetto);
anticipoCalcolato = parseFloat(anticipoCalcolato).toFixed(2);

var ulterioreSaldo = $("#variazioneUlterioreSaldoInput").val();     
ulterioreSaldo = parseFloat(ulterioreSaldo);

var totalePagamento =  anticipoCalcolato + ulterioreSaldo;

console.log("ANTICIPO RICALCOLATO: " + anticipoCalcolato + " ULTERIORE SALDO: " + ulterioreSaldo + " TOTALE PAGAMENTO: " + totalePagamento);

所以你看到我试图将这两个名为 anticipoCalcolato ulterioreSaldo 的值加到 totalePagamento 变量中。

正如您所看到的,我对每个求和值都做了parseFloat()

问题是我在FireBug控制台中获得了以下结果:

TOTALE PAGAMENTO: 4392.378.36

所以问题是它似乎仍然将这些值看作String并且进行连接而不是总和 我错过了什么?我该如何尝试解决这个问题?

2 个答案:

答案 0 :(得分:4)

  

正如你所看到的,我对每个求和值都做了一个parseFloat()。

请注意 - 您在总计值的结果上使用了parseFloat()。然后,您在其上使用toFixed()返回一个字符串。

当您想要使用数学运算符时,您需要确保始终使用数值类型。为此,最好只在该点(或之前)使用toFixed(),该变量将显示给用户。试试这个:

var anticipoCalcolato = parseFloat(saldoProgetto) + parseFloat(anticipoProgetto);
var ulterioreSaldo = parseFloat($("#variazioneUlterioreSaldoInput").val());
var totalePagamento = (anticipoCalcolato + ulterioreSaldo).toFixed(2);

console.log("ANTICIPO RICALCOLATO: " + anticipoCalcolato + " ULTERIORE SALDO: " + ulterioreSaldo + " TOTALE PAGAMENTO: " + totalePagamento);

答案 1 :(得分:1)

toFixed()返回字符串,这就是你没有得到总和的原因。 请访问以下链接了解更多详情。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed

var anticipoCalcolato = parseFloat(saldoProgetto) + parseFloat(anticipoProgetto);

var ulterioreSaldo    = parseFloat($("#variazioneUlterioreSaldoInput").val());

var totalePagamento   = anticipoCalcolato + ulterioreSaldo;

console.log("ANTICIPO RICALCOLATO: " + anticipoCalcolato + " ULTERIORE SALDO: " + ulterioreSaldo + " TOTALE PAGAMENTO: " + totalePagamento);