解析toLocaleString并返回浮动松动精度

时间:2017-09-18 14:18:54

标签: javascript

这是按预期工作的:

parseFloat(newValue).toLocaleString("de-DE", { minimumFractionDigits: 2, maximumFractionDigits: 2 })将生成字符串:"34.886,55"

这不能按预期工作:

对于parseFloat("34.886,55"),我收到一个号码,但我在逗号后丢失了所有内容:34.886

如何解决此问题?

2 个答案:

答案 0 :(得分:0)

以下是数字解析的简短示例...逗号在数字中无效,只有句号表示小数分隔符。如果遇到,则字符串转换停止,如第二个日志中所示。还要检查第三个日志,如果它低于100,我会添加一个值为真的检查,这样就更明显的是你没有玩千位分隔符但实际上是十进制分隔符。



--match 'alex-[0-9][0-9][0-9][0-9]w[0-9][0-9].[AB]'




答案 1 :(得分:0)

我写了这个简单的函数来做 locale based parseFloat ,据我所知,这个函数的假设是。

  1. 十进制运算符将出现一次。
  2. 因此将其拆分为十进制("," in our case)以获取数组中的两个元素。
  3. 然后删除数组中每个元素的千位分隔符("." in our case)。
  4. 然后使用小数分隔符("." in our case
  5. 连接数组
  6. 最后返回此连接号码的parseFloat值!
  7. 
    
    var str = "34.886,55"
    console.log("before: ", str);
    str = localeParseFloat(str, ",", ".");
    console.log("resulting floating value from the function: ", str);
    
    function localeParseFloat(str, decimalChar, separatorChar){
    var out = [];
    str.split(",").map(function(x){
    	x = x.replace(".", "");
      out.push(x);
    })
    out = out.join(".");
    return parseFloat(out);
    }
    
    <script src="https://rawgit.com/eu81273/jsfiddle-console/master/console.js"></script>
    &#13;
    &#13;
    &#13;