使用JQuery将表单值添加为数字和浮点数

时间:2013-11-25 18:37:40

标签: javascript jquery

我已经阅读了几篇关于添加表单值的帖子/帖子,但我遗漏了一些内容并且可以使用一些帮助。

我有三个输入文本框。我想在其中两个中添加值,以查看它们是否与输入到第三个中的值相匹配。无论我使用整数还是浮点数,我的大部分测试都是错误的。感叹!

代码:

var payments_total = 0.00;
payments_total = Math.round(parseFloat($('#amount1').val())) + Math.round(parseFloat($('#amount2').val()));
if( payments_total == Math.round(parseFloat($('#answer').val())) ){
        alert("we have a match");
    } else {
        alert("no match");
    }

有人会告诉我我做错了什么吗?我需要这个来处理整数和十进制数。

感谢您的帮助。

4 个答案:

答案 0 :(得分:0)

我猜你有精确问题或舍入问题(或两者兼而有之)。 要正确解决问题,请尝试以下方法:

var amount1 = parseFloat($('#amount1').val());
var amount2 = parseFloat($('#amount2').val());
var answer  = parseFloat($('#answer').val());

var payments_total = Math.round(amount1 + amount2);

console.log('amount1 = ' + amount1);
console.log('amount2 = ' + amount2);
console.log('answer = '  + answer);

if( payments_total == Math.round(answer) ){
    alert("we have a match");
} else {
    alert("no match");
}

答案 1 :(得分:0)

一个问题,但可能不是唯一一个,因为你说它不适用于整数是你要添加舍入值:

payments_total = Math.round(parseFloat($('#amount1').val())) + Math.round(parseFloat($('#amount2').val()));

而不是舍入增加的值:

payments_total = Math.round(parseFloat($('#amount1').val())  + parseFloat($('#amount2').val());

e.g。对于amount1 = 2.4和amount2 = 3.2

前者会给出答案2 + 3 = 5

后者会给出答案2.4 + 3.2 = round(5.6)= 6

尝试打印出'alert'中的相关值以进行调试。

答案 2 :(得分:0)

根据你的评论,这就是为什么

answer = Math.round(999.72) => 1000

amount1 = Math.round(900.42) => 900

amount2 = Math.round(99.30) => 99

So, 1000 != 999

相反,您可以在

之前进行添加

Math.round(999.72) = Math.round(900.42 + 99.30) = 1000

答案 3 :(得分:0)

javascript中的所有数字均为floats,因此无需使用Math.round() afaics。需要ParseFloat()将字符串从<input>元素转换为数字(将在变量中存储为floats):

var payments_total = parseFloat($('#amount1').val()) + parseFloat($('#amount2').val());
if( payments_total == parseFloat($('#answer').val()) ){
    alert("we have a match");
} else {
    alert("no match");
}

jsbin:http://jsbin.com/EneWOxe/2/edit

每次将数字存储在变量中时,它都会转换为浮点数,因此Math.round()可能只需要对输出进行美化。