1

我对为什么 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”在没有替换()的情况下可以正常工作。任何其他想法,在这些情况下我应该怎么做?消除此问题的最佳方法是什么,然后进行实践。谢谢

4

1 回答 1

2

因为本地化。

预期的小数分隔符是.,不是,

因为.在所有情况下都有效,所以我建议始终转换数字(使用您的替换代码)。如果您将数据表示规范化,这并没有什么坏处。

于 2013-02-22T08:37:13.430 回答