Использование 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 ответ
Из-за локализации.
Ожидаемый десятичный разделитель .
не ,
,
Так как .
работает во всех случаях, я бы рекомендовал всегда преобразовывать числа (используйте код замены). Не повредит, если вы канонизируете представление данных.