Мысль показалась мне, я писал часть кода JavaScript, который обработал некоторые значения с плавающей точкой. Каков символ десятичной точки в JavaScript? Это всегда .
? Или действительно ли это является определенным для культуры? И что относительно .toFixed()
и .parseFloat()
? Если я обработаю ввод данных пользователем, то он, вероятно, будет включать определенный для местной культуры десятичный символ разделителя.
В конечном счете я хотел бы написать код, который поддерживает обе десятичных точки во вводе данных пользователем - определенный для культуры и .
, но я не могу написать такой код, если я не знаю то, что ожидает JavaScript.
Добавленный: хорошо, Rubens Farias предлагает посмотреть на подобный вопрос, который имеет аккуратный принятый ответ:
function whatDecimalSeparator() {
var n = 1.1;
n = n.toLocaleString().substring(1, 2);
return n;
}
Это хорошо, это позволяет мне понять десятичную мысль локали. Шаг к решению, несомненно.
Теперь, остающаяся часть должна была бы определить что поведение .parseFloat()
. Несколько ответов указывают на это для литералов с плавающей точкой только .
допустимо. Делает .parseFloat()
действовать одинаково? Или это могло бы потребовать локального десятичного разделителя в некотором браузере? Есть ли какие-либо различные методы для парсинга чисел с плавающей точкой также? Я должен развернуть свой собственный just-to-be-sure?
Согласно спецификации, децималлатерный определяется как:
DecimalLiteral ::
DecimalIntegerLiteral . DecimalDigitsopt ExponentPartopt
. DecimalDigits ExponentPartopt
DecimalIntegerLiteral ExponentPartopt
и для удовлетворения аргумента Parsefloat:
, поэтому USTITTRING становится самым длинным префиксом TRIMMEDSTRING, что удовлетворяет синтаксису Strdecimalliteral, что означает первый приспособленный буквальный номер строки, который он находит на входе. Только .
Может использоваться для указания номера с плавающей точкой. Если вы принимаете входы из разных локалей, используйте строку Заменить:
function parseLocalNum(num) {
return +(num.replace(",", "."));
}
Функция использует Onary Operator вместо Parsefloat, потому что мне кажется, что вы хотите быть строгими к входу. Parsefloat («1ABC»)
1 , тогда как использование оператора Унарного + «1ABC»
возвращается NAN
. Это делает его намного легче подтвердить вход. Использование Parsefloat - просто угадать, что вход находится в правильном формате.
Режим 0x0d основан на planar , в то время как режим 0x13 отсутствует (без специальной конфигурации как режим X). Для просмотра работы в плоском режиме необходимо проверить дополнительные документы.
-121--3995789- Насколько мне известно, сам javascript знает только о .
разделитель для десятичных разрядов. По крайней мере, один человек, которому я доверяю вещи JS, согласен:
http://www.merlyn.demon.co.uk/js-maths.htm # DTS
-121--1149299-используйте:
theNumber.toLocaleString();
, чтобы получить правильно отформатированную строку с правильным десятичным числом и разделителями тысяч
Насколько я знаю, сам JavaScript только знает о .
Разделитель для десятичных средств. По крайней мере, один человек, чье суждение которого я доверяю на JS-вещи, очаровавшись: