Подтвердить что ты не робот

Javascript parse float игнорирует десятичные знаки после запятой

Вот простой сценарий. Я хочу показать вычитание двух значений на моем сайте:

//Value on my websites HTML is: "75,00"
var fullcost = parseFloat($("#fullcost").text()); 

//Value on my websites HTML is: "0,03"
var auctioncost = parseFloat($("#auctioncost").text());

alert(fullcost); //Outputs: 75
alert(auctioncost); //Ouputs: 0

Может ли кто-нибудь сказать мне, что я делаю неправильно?

4b9b3361

Ответ 1

Это "По дизайну". Функция parseFloat будет рассматривать части строки только до тех пор, пока не достигнет значения, отличного от +, -, числа, экспоненты или десятичной точки. Когда он видит запятую, он перестает смотреть и только рассматривает часть "75".

Чтобы исправить это, переведите запятые в десятичные точки.

var fullcost = parseFloat($("#fullcost").text().replace(',', '.'));

Ответ 2

javascript parseFloat не принимает параметр locale. Поэтому вам нужно будет заменить , на .

parseFloat('0,04'.replace(/,/, '.')); // 0.04

Ответ 3

parseFloat анализирует в соответствии с JavaScript определение десятичного литерала, а не определение вашей локали. (Например, parseFloat не поддерживается локалью.) Десятичные литералы в JavaScript используют . для десятичной точки.

Ответ 4

Почему бы не использовать глобализацию? Это только одна из проблем, с которой вы можете столкнуться, когда вы не используете английский язык:

Globalize.parseFloat('0,04'); // 0.04

Некоторые ссылки на stackoverflow для просмотра:

Ответ 5

Как @JaredPar указал в его ответе, используйте parseFloat с заменой

var fullcost = parseFloat($("#fullcost").text().replace(',', '.'));

Только замена comma на dot будет исправлена, Если не, то число над тысячами, например 1.000.000,00, приведет к неправильной цифре. Поэтому вам нужно заменить comma удалить dots.

// Remove all dot's. Replace the comma.
var fullcost = parseFloat($("#fullcost").text().replace(/\./g,'').replace(',', '.'));

Используя два замещения, вы сможете обрабатывать данные без получения неправильных цифр на выходе.

Ответ 6

Числа в JS используют символ . (полный стоп/период), чтобы указать десятичную точку не a , (запятая).