我正在关注Beginning Javascript,并了解数据类型转换,更具体的浮点数和整数。
在Chrome控制台中,当我尝试减法时:
parseFloat("2.1" - "0.1");
=>2
但是当尝试添加相同的时候我得到这个:
parseFloat("2.1" + "0.1");
=>2.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