在Javascript中添加parseFloat,帮助我理解它是如何工作的

时间:2015-09-22 17:22:13

标签: javascript

我正在关注Beginning Javascript,并了解数据类型转换,更具体的浮点数和整数。

在Chrome控制台中

,当我尝试减法时:

parseFloat("2.1" - "0.1"); =>2

但是当尝试添加相同的时候我得到这个:

parseFloat("2.1" + "0.1"); =>2.1

有人可以详细说明为什么在添加过程中它的行为不符合我的想法吗?

提前致谢

1 个答案:

答案 0 :(得分:0)

在调用parseFloat之前,先看看减法和加法的结果:

"2.1" - "0.1"
=> 2

在这种情况下,JavaScript推断您要减去数字,因此在应用减法运算之前已经为您解析了字符串。让我们来看看另一个案例:

"2.1" + "0.1"
=> "2.10.1"

这里加号运算符不明确。你想将字符串转换为数字并添加它们,还是想要连接字符串?请记住"AB" + "CDE" === "ABCDE"。然后你有:

parseFloat("2.10.1")

现在,2.10.1不是有效数字,但解析会发挥最佳效果并返回2.10(或更简单地说,2.1)。

我认为你真正想做的是在添加或减去它们之前分别解析这两个数字。这样你就不会依赖JavaScript从字符串到数字的自动转换,任何数学运算都应该按预期工作:

parseFloat("2.1") - parseFloat("0.1")
=> 2

parseFloat("2.1") + parseFloat("0.1")
=> 2.2