7 ответов:
если они предназначены для отдельных значений, попробуйте следующее:
var values = "554,20".split(",") var v1 = parseFloat(values[0]) var v2 = parseFloat(values[1])если они предназначены для одного значения (например, на французском языке, где половина написана 0,5)
var value = parseFloat("554,20".replace(",", "."));
вы когда-нибудь пробовали это делать? : p
var str = '3.8';ie alert( +(str) + 0.2 );+(string) приведет строку в float.
удобно!
Итак, чтобы решить вашу проблему, вы можете сделать что-то вроде этого:
var floatValue = +(str.replace(/,/,'.'));
заменить запятую точкой.
это вернет только 554:
var value = parseFloat("554,20")это вернет 554.20:
var value = parseFloat("554.20")так, в конце концов, вы можете просто использовать:
var fValue = parseFloat(document.getElementById("textfield").value.replace(",","."))Не забывай об этом
parseInt()должен использоваться только для разбора целых чисел (без плавающих точек). В вашем случае он будет возвращать только 554. Кроме того, вызов parseInt() на поплавке не будет округлять число: он займет свой этаж (ближайший Нижний целое.)
расширенный пример, чтобы ответить на вопрос Педро Феррейры из комментариев:
если текстовое поле содержит тысячи разделительных точек, как в
1.234.567,99они могут быть устранены заранее с другойreplace:var fValue = parseFloat(document.getElementById("textfield").value.replace(/\./g,"").replace(",","."))
Если вы расширяете объект String, как это..
String.prototype.float = function() { return parseFloat(this.replace(',', '.')); }.. вы можете запустить его так
"554,20".float() > 554.20работает с точкой, а также
"554.20".float() > 554.20 typeof "554,20".float() > "number"
@GusDeCool или кто-либо еще пытается заменить более одной тысячи разделителей, один из способов сделать это-регулярное выражение global replace:
/foo/g. Просто помните, что.является метасимволом, поэтому вы должны избежать его или поместить его в скобки (\.или[.]). Вот один из вариантов:var str = '6.000.000'; str.replace(/[.]/g,",");
вы можете использовать эту функцию. Он заменит запятые на' ', а затем он будет parseFlaot значение и после этого он снова будет регулировать запятые в значении.
function convertToFloat(val) { if (val != '') { if (val.indexOf(',') !== -1) val.replace(',', ''); val = parseFloat(val); while (/(\d+)(\d{3})/.test(val.toString())) { val = val.toString().replace(/(\d+)(\d{3})/, '' + ',' + ''); } } return val; }
У меня была та же проблема, за исключением того, что я не знал заранее, что такое разделители тысяч и десятичный разделитель. Я закончил тем, что написал библиотеку, чтобы сделать это. Если вам интересно, то вот оно:https://github.com/GuillaumeLeclerc/number-parsing
Comments