1

我正在制作一个有趣的计算器,但由于某种原因,除了加法之外一切正常。它不是将两个数字相加,而是将它们都写下来。例如 5 + 7 显示为 57。

正如我之前所说,-、/ 和 * 工作正常。我应该如何解决这个问题?

这是代码:

$('.solve2').click(function(){
var num1 = $('#num').val();
var num2 = $('#number').val();
var ans = num1+num2;
alert(''+ans+'');
});
4

5 回答 5

2
$('.solve2').click(function(){
var num1 = parseInt($('#num').val());
var num2 = parseInt($('#number').val());
var ans = num1+num2;
alert(''+ans+'');
});

您可以使用 parseFloat 而不是 parseInt,如另一个答案中所述。

编辑:正如下面评论中所述,最好强制将字符串解释为十进制数。您可以通过添加 radix 参数来做到这一点。

var radix = 10; //decimal
var num1 = parseInt($('#num').val(), radix);
var num2 = parseInt($('#number').val(), radix);
于 2013-10-01T22:41:34.343 回答
2

使用parseFloat,它解析一个字符串参数并返回一个浮点数。

var ans = parseFloat(num1)+parseFloat(num2);

根据您的示例,它作为共联运算符工作

于 2013-10-01T22:41:01.043 回答
0

当您获取输入元素的值时——无论是通过普通 JS 还是使用 jQuery——.val()它都会以字符串形式返回。当 的操作数之一+是字符串而另一个是原语时 - 即数字、字符串、布尔值undefinednull- 然后另一个被转换为字符串并将它们连接起来:

4 + " four" === "4 four";  // true
false + " is now a string" === "false is now a string";  // true

等等

因此,您返回的值.val()被连接起来,您需要使用parseFloat.val()将返回的字符串转换为数字:

$('.solve2').click(function(){
    var num1 = parseFloat($('#num').val()),
        num2 = parseFloat($('#number').val()),
        ans = num1 + num2;
    console.log(ans);
});
于 2013-10-01T23:13:08.410 回答
0

将您的值从字符串转换为数字。+既是加法运算符又是共联运算符。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators

于 2013-10-01T22:41:19.120 回答
0

很简单,您必须将字符串转换为整数。使用 parseInt

var num1 = parseInt($('#num').val());
var num2 = parseInt($('#number').val());

查看我的示例: JSFiddle 示例

于 2013-10-01T22:55:29.873 回答