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,据我所知,这个函数的假设如下
“,”在我们的例子中是
)拆分它,得到一个数组中的两个元素”,在本例中为
)“)将数组连接起来(在本例中为
)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知道了,我不知道!谢谢