在JavaScript中,我应该调用parseFloat将字符串转换为浮点数,还是应该让JavaScript转换它们?

时间:2011-04-23 10:24:52

标签: javascript string floating-point numbers type-conversion

我正在编写一些JavaScript,它接受来自文本字段的数字输入,并通过一些方程运行它们。这些方程使用乘法,减法,加法,除法和指数。到目前为止,所有测试似乎都表明JavaScript正在将数字文本输入(类型字符串)转换为类型编号并正确计算方程结果。我应该继续信任JavaScript来隐式地将输入值从类型字符串转换为类型编号,还是应该使用parseFloat()显式转换每个输入值?

提前感谢您提供的任何建议或见解!

编辑:为了澄清,我正在接受输入,检查以确保它是一个整数。如果输入值不是整数,则会显示警报并且不进行任何计算。如果输入值是整数,那么它将通过一个等式运行,其中输入立即相乘(0.01 *值),或者应用指数(Math.pow(value,2))。对于两个单独的输入,这两次完成。另一个等式采用前两个方程的结果并立即将它们除(0.5 /值)。鉴于这些操作,隐式转换是否安全?

3 个答案:

答案 0 :(得分:3)

显式。不确定你看到了什么,但它确实不起作用

var a = "1";
var b = 2;

a + b  = "12"
b + a = "21"

答案 1 :(得分:3)

隐式转换它们与使用parseFloat具有相同的效果,除非字符串包含字符,其中parseFloat忽略float.ie之后的字符。

(+"12.5") == parseFloat("12.5"); // true

isNaN(+"a12.5") == true;
isNaN(parseFloat("a12.5")) == true;

然而

(+"12.5s"); // is NaN but
parseFloat("12.5s") == 12.5;

所以这将取决于您接受的输入类型。

答案 2 :(得分:2)

如果你没有显式地使用parseFloat(),你的字符串可能会保留在输入点之外的字符串,并且在代码中的某个时刻意外地将其用作字符串,从而导致串联或其他意外的字符串操作。

另外,如果您的输入格式错误,parseFloat()将返回您可以测试的NaN。

如果您期望浮动,请使用parseFloat()。