我感兴趣的是为什么parseFloat()在这种情况下返回0:
var priceFromJson = '0,33';
console.log(priceFromJson);
var tmpPrice = parseFloat(priceFromJson);
console.log('tmpPrice'+tmpPrice);
var price = parseFloat( ( tmpPrice ) * 1.2 ).toFixed(2);
console.log('price'+price);
结果是:
0,33
tmpPrice0
price0.00
但如果我这样做:
var priceFromJson = '0,33';
console.log(priceFromJson);
var tmpPrice = parseFloat( priceFromJson.replace(',','.') );
console.log('tmpPrice'+tmpPrice);
var price = parseFloat( ( tmpPrice ) * 1.2 ).toFixed(2);
console.log('price'+price);
结果是:
0,33
tmpPrice0.33
price0.40
按http://www.w3schools.com/jsref/jsref_parsefloat.asp,但在我的情况下,第一个字符为零。
有什么想法吗?
编辑(评论后):
所以其他小数,例如。 “5,36”,“10,44”在没有替换()的情况下工作正常。任何其他想法,在这些情况下我该怎么办?什么是消除这个问题然后实践它的最佳方法。感谢
答案 0 :(得分:2)
因为本地化。
预期小数点分隔符为.
,而不是,
。
由于.
适用于所有情况,我建议始终转换数字(使用替换代码)。如果你对数据表示进行规范化,这并没有什么坏处。