我已经阅读了几篇关于添加表单值的帖子/帖子,但我遗漏了一些内容并且可以使用一些帮助。
我有三个输入文本框。我想在其中两个中添加值,以查看它们是否与输入到第三个中的值相匹配。无论我使用整数还是浮点数,我的大部分测试都是错误的。感叹!
代码:
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");
}
有人会告诉我我做错了什么吗?我需要这个来处理整数和十进制数。
感谢您的帮助。
答案 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()
可能只需要对输出进行美化。