【问题标题】:JS Number function convert this string "1,255,558.3652" appear "Nan" [duplicate]JS Number 函数转换这个字符串“1,255,558.3652”出现“Nan” [重复]
【发布时间】:2019-01-18 17:17:37
【问题描述】:

我使用Number("1,255,558.3652") 将此字符串转换为数字,但控制台中的结果告诉我“Nan”。

在我的 html 代码中,我使用:

 <input id="text_target_value" class="text-right number" type="text" onkeyup="value=value.replace(/[^\d{1,}\.\d{1,}|^\d{1,}\%|\d{1,}]/g,'')"/> 

格式化输入,当我使用时:

var page_goal_val=Number($("#text_target_value").val());

要获取值,它说“Nan”,那我该怎么办?

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    Number 无法识别带有逗号的数字字符串。先去掉所有的逗号:

    console.log(Number(
      "1,255,558.3652".replace(/,/g, '')
    ));

    【讨论】:

      【解决方案2】:

      您的input 元素允许123....123 等值。如果你这样做:

      Number(
        "123....123".replace(/,/g, '')
      )
      

      它仍然会给你NaN。为了防止这种情况发生,并且也建议使用浮动值,请使用 parseFloat() 而不是 Number()。使用它,它将阻止NaN 输出:

      你得到 1245634(但不是 NaN),这应该是正确的

      parseFloat(
        "12,456,34...123".replace(/,/g, '')
      );
      

      console.log(parseFloat(
        "12,456,34...123".replace(/,/g, '')
      ));

      你得到 1234564.123

      parseFloat(
        "1,234,564.123".replace(/,/g, '')
      );
      

      console.log(parseFloat(
        "1,234,564.123".replace(/,/g, '')
      ));

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-13
        • 2017-03-20
        • 2020-11-22
        • 1970-01-01
        • 1970-01-01
        • 2014-02-09
        • 1970-01-01
        • 2023-02-17
        相关资源
        最近更新 更多