我正在尝试将十进制数字加在一起,但是当我警告变量finalnumber
时,我得到零。变量number
是十进制数。我如何解决这个问题,以便变量finalnumber
是所有number
的总和?
var finalnumber = 0;
$('#chosen-keyword-container').find('.keyword-row').each(function() {
var number = $(this).find('td:last').find('input[name=bid-price[]]').val();
var finalnumber = parseInt(number) + parseInt(finalnumber);
});
答案 0 :(得分:8)
改变这个:
var finalnumber = parseInt(number)+parseInt(finalnumber);
对此:
finalnumber = finalnumber + parseFloat(number);
或者:
finalnumber += parseFloat(number);
parseInt
无法保存小数值。请改用parseFloat
。finalnumber
声明var
,因为它会隐藏外部范围内的finalnumber
。答案 1 :(得分:1)
只需将var
关键字放在finalnumber
前面的函数中。使用var
,您可以在该名称和范围下定义新变量。所以基本上你有两个版本的finalnumber
并且只添加到本地版本(函数内部而不是全局版本)。
另一方面,当你使用十进制数字时,你应该将parseInt
更改为parseFloat
(参见@gdoron的回答)。
$('#chosen-keyword-container').find('.keyword-row').each(function() {
var number = $(this).find('td:last').find('input[name=bid-price[]]').val();
finalnumber = parseFloat(number) + finalnumber;
});
在旁注中:您可以将parseInt()
放在finalnumber
的函数内。此变量始终是数字值,因此无需转换它。
答案 2 :(得分:0)
更改添加行如下
finalnumber = finalnumber + parseFloat(number);