Использование parseFloat() с номерами, начинающимися с 0

Меня интересует, почему 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" работают нормально без замены (). Любая другая идея, что я должен делать в этих ситуациях? Что является лучшим методом для устранения этой проблемы, то попрактикуйтесь в этом. Спасибо

1 ответ

Из-за локализации.

Ожидаемый десятичный разделитель .не ,,

Так как . работает во всех случаях, я бы рекомендовал всегда преобразовывать числа (используйте код замены). Не повредит, если вы канонизируете представление данных.

Другие вопросы по тегам