【问题标题】:Javascript ParseFloat() usage with 9 digitJavascript ParseFloat() 使用 9 位数字
【发布时间】:2019-09-30 08:09:13
【问题描述】:

我想将字符串转换为浮点数,但我遇到了问题

var b = parseFloat("10.525.142,25");

"输出 = "10.525"

var b = parseFloat("10.525,25");

“输出 = 10.525”

我该如何解决?

【问题讨论】:

  • "我有一个问题" – 你能说得更具体些吗?显示能做它应该做的事情的代码不是问题。你会期待 10525142.25 吗?
  • 使用.replace(/\./g, "")删除所有千位分隔符,然后使用.replace(",", ".")将小数分隔符替换为.

标签: javascript


【解决方案1】:

如果 parseFloat 遇到加号 (+) 以外的字符, 减号 (- U+002D HYPHEN-MINUS)、数字 (0–9)、小数点 (.)、 或指数(e 或 E),它返回该字符之前的值, 忽略无效字符及其后面的字符。

parseFloat("10525142.25") 

10525142.25

parseFloat("10525.25")

10525.25

parseFloat specification

【讨论】:

    【解决方案2】:

    完成之前的答案并将其应用于您的问题。 从字符串中删除点,然后用点替换逗号。

    // Your string values
    var strA = "10.525.142,25";
    var strB = "10.525,25";
    
    function fromUSFormatToStandard(x) {
        return x.replace(/\./g, "").replace(',', '.');
    }
    
    var a = parseFloat(fromUSFormatToStandard(strA)); // Output : 10525142.25 (float)
    var b = parseFloat(fromUSFormatToStandard(strB)); // Output : 10525.25 (float)
    

    例如:https://jsfiddle.net/jm3fr9d4/

    【讨论】:

    【解决方案3】:

    parseFloat() 函数解析一个字符串并返回一个浮点数。

    此函数确定指定字符串中的第一个字符是否为数字。如果是,它会解析字符串,直到到达数字的末尾,并将数字作为数字返回,而不是作为字符串。

    注意:只返回字符串中的第一个数字,允许前后有空格,如果第一个字符不能转换为数字,则parseFloat()返回NaN。

    内容参考:

    https://www.w3schools.com/jsref/jsref_parsefloat.asp

    您可以查看这篇文章,了解为什么它忽略逗号后的字符。

    Javascript parse float is ignoring the decimals after my comma

    【讨论】:

    • here复制的答案没有给出任何归属。
    • 上一节中的答案和帮助内容之间存在差异,答案已作为参考链接,而帮助内容是从W3引用的,而不是像您所拥有的任何其他答案提及 。无论如何,我也更新了内容的参考。
    • 从哪里复制它并不重要。 始终提供来源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多