Javascript 解析toLocaleString并返回到浮点丢失精度

Javascript 解析toLocaleString并返回到浮点丢失精度,javascript,Javascript,这就是预期的效果: 这个parseFloat(newValue).toLocalString(“de de”,{minimumFractionDigits:2,maximumFractionDigits:2})将产生一个字符串:“34.886,55” 这不符合预期: 对于parseFloat(“34.886,55”)我得到了一个数字,但在逗号之后我失去了一切:34.886 如何解决此问题?下面是一个简单的数字解析示例。。。逗号在数字中无效,只有句号表示十进制分隔符。如果遇到这种情况,字符串转换将

这就是预期的效果:

这个
parseFloat(newValue).toLocalString(“de de”,{minimumFractionDigits:2,maximumFractionDigits:2})
将产生一个字符串:
“34.886,55”

这不符合预期:

对于
parseFloat(“34.886,55”)
我得到了一个数字,但在逗号之后我失去了一切:
34.886


如何解决此问题?

下面是一个简单的数字解析示例。。。逗号在数字中无效,只有句号表示十进制分隔符。如果遇到这种情况,字符串转换将停止,正如您在第二个日志中看到的那样。还要检查第三个日志,我已经添加了一个检查,如果值小于100,则该值为true,这使您更清楚地看到,您不是在使用千位分隔符,而是真正的十进制分隔符

console.log(parseFloat(“34.886.55”);
console.log(parseFloat(“34886.55”));

console.log(parseFloat(“34.886,55”)、parseFloat(“34.886,55”)<100)
我编写这个简单的函数是为了执行基于区域设置的parseFloat,据我所知,这个函数的假设如下

  • 十进制运算符将出现一次
  • 所以在小数点(
    “,”在我们的例子中是
    )拆分它,得到一个数组中的两个元素
  • 然后移除数组中每个元素的千分分隔符(
    ”,在本例中为
  • 然后用十进制分隔符(
    “)将数组连接起来(在本例中为
  • 最后返回这个连接数的parseFloat值
    var str=“34.886,55”
    console.log(“before:”,str);
    str=localeParseFloat(str,“,”,“);
    log(“函数产生的浮点值:”,str);
    函数localeParseFloat(str、decimalChar、separatorChar){
    var out=[];
    str.split(“,”).map(函数(x){
    x=x。替换(“.”,“”);
    向外推(x);
    })
    out=out.join(“.”);
    返回浮点(out);
    }

    parseFloat(“34886.55”)逗号无效,因此解析将在它前面停止。还有一个句号是十进制分隔符。在处理@NarenMurali之前为什么不删除逗号的可能重复。逗号是dede中的十进制分隔符,而点是千位分隔符。移除它也无济于事…@Salketer知道了,我不知道!谢谢