JavaScript求和数值

11

我需要在JavaScript中对几个值进行求和。 我已经尝试使用以下代码:

var a = 2;
var b = 5;
c = a+b;

但是,输出结果(c)只是将a和b的值合并,而不是计算出a和b的值。所以输出结果为:

c = 25

我相信你们可以轻松地帮助我解决这个问题。先谢谢了。敬礼,安达。


3
在发布前测试你的代码。这个版本实际上是可行的 :P - hugomg
1
不要忘记使用parseInt指定基数,例如:parseInt(a, 10)。 - sciritai
@Andha 我认为有一个jQuery插件可以做到这一点。谷歌搜索jQuery基本算术插件。:P - Šime Vidas
可能是重复问题,因为给出的代码没有产生错误:https://dev59.com/BWYq5IYBdhLWcg3wbgDk - General Grievance
8个回答

13

确保这些值是数字,否则它们将连接在一起而不是相加。

a = parseInt(a, 10); // a is now int 

2
在调用 parseInt() 时,请确保使用 radix 参数。 - JAAulde

8

您的代码正在添加(连接)字符串。您确定您发布的代码代表了您的问题吗?您编写的应该可以工作。请确保在实际代码中不要这样说:

var a = '2'; // or something similar

如果这些值是从其他地方解析出来的,请确保在执行加法之前对它们调用parseInt(a, 10)函数,其中10是基数。
或者根据评论指出的,Number函数也可能适合您的目的。

是的,我没有为值使用任何引号。我已经通过使用parseInt(a)和parseInt(b)将它们转换为int。我做得对吗? - Andha
3
好的。这要看情况。 parseInt(a) 不会改变 a 变量,它只会返回解析后的整数。所以你可能需要使用 a = parseInt(a)c = parseInt(a) + parseInt(b) - numbers1311407
1
在调用 parseInt() 时,请确保使用 radix 参数。 - JAAulde
我可以看出指定基数会有助于可读性,但这真的必要吗?很可能这个应用程序将对十进制数字进行求和。编辑:我猜考虑到他正在解析数字,可能会在前面加上'0'之类的东西。我认输了 :-P - numbers1311407
我认为否则做这件事是疯狂的,numbers1311407。这里有一些有趣的东西,parseInt(null, 27); - sciritai
1
最好使用 Number 转换成数字,不需要基数 - 所以 Number('08') 返回 8,而不是 0。 - KooiInc

6

作者可能提供了“简化”的代码,以便我们能够了解。我遇到了同样的问题,当获取输入值时,JS将其解释为字符串。使用“Number()”解决了这个问题:

var sum = Number(document.getElementById("b4_f2_"+i).value) + Number(document.getElementById("b4_f3_"+i).value) + Number(document.getElementById("b4_f4_"+i).value);

2

这个很好用:

var a = 2; 
var b = 5; 
var c = a + b; // c is now 7

2

使用parseInt()函数:

var a=2;
var b=5;
c=parseInt(a)+parseInt(b);

2
您展示的代码不会按您描述的方式工作。它将导致7
但是,当尝试执行加法时,如果一个或两个数字值实际上是数字字符串,则其他值将被转换为字符串并进行连接。
这最有可能发生在尝试读取表单值、读取 cookie 或某些其他类型的 HTTP 标头时。要将字符串转换为数字,您需要使用parseInt() [docs]。阅读它的文档,并务必注意并提供第二个参数(radix以确保从字符串到数字的转换使用您期望的基数。(其他答案中缺乏关于radix的信息是我提前发布答案的主要原因,即使其他人已经提到了parseInt()。) 此外,FYI,在处理未知值并希望执行数学运算时,另一个方便的函数是isNaN() [docs]。

http://www.javascripttoolbox.com/bestpractices/#onclick 表示你可以执行以下操作:X = (+"2") + (+"b5") - 这个我觉得很有趣 :) - MikeyKennethR

1

对于每个值都应用Number()是很重要的。理想的方法是:

var sum = 0
sum = Number('93') + Number('7')          //result 100

-而不是这样(注意这一点)

var sum = 0
sum = Number('97' + '3')                  //result 937

- 对此要小心(因为变量默认会分配字符串类型)
var sum = 0
sum = Number('97') + '3'                  //result "973"

0

您可以通过在字符串前添加+来将其转换为数字。对于某些人来说,这样更易读。 例如:

const a = "2";
const b = "5";
const c = +a + +b 

或者使用const c = (+a) + (+b)可能更易读。 这将首先将字符串转换为数字。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接