【问题标题】:In a JavaScript, should I call parseFloat to convert strings to floating point numbers, or should I let JavaScript convert them?在 JavaScript 中,我应该调用 parseFloat 将字符串转换为浮点数,还是应该让 JavaScript 转换它们?
【发布时间】:2011-04-23 10:24:51
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

    明确。不知道你看到了什么,但它并没有真正起作用

    var a = "1";
    var b = 2;
    
    a + b  = "12"
    b + a = "21"
    

    【讨论】:

    • 我敢于更新你的结果。这些添加最终都是字符串,这在您的答案中并不明显。
    • 罗布。正确,我实际上只是在修改,当您更新时,我从节点控制台复制和粘贴已停止工作。一切都好:D
    • 使用带有数字和字符串的+ 运算符将连接它们。但是,-*/ 可用于将字符串隐式转换为数字。添加也可以使用(+"1") + 2。 (带或不带括号)
    【解决方案2】:

    隐式转换它们与使用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;
    

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

    【讨论】:

      【解决方案3】:

      如果您不显式使用 parseFloat(),您的字符串可能会在输入点之后仍然是字符串,并在稍后的代码中意外地用作字符串,从而导致连接或其他意外字符串操作。

      此外,如果您的输入格式不正确,则 parseFloat() 将返回 NaN,您可以对其进行测试。

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

      【讨论】:

        猜你喜欢
        • 2019-06-20
        • 1970-01-01
        • 1970-01-01
        • 2022-01-16
        • 1970-01-01
        • 2016-02-06
        • 2011-11-25
        • 1970-01-01
        相关资源
        最近更新 更多