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

JavaScript parseFloat в разных культурах

У меня вопрос о поведении JavaScript parseFloat в разных частях мира.

В США, если вы вызываете parseFloat на строку "123.34", вы получите номер с плавающей запятой 123.34.

Если я разрабатываю код в словах Швеции или Бразилии, и они используют запятую вместо периода в качестве разделителя десятичных чисел, функция parseFloat ожидает "123,34" или "123,34".

Обратите внимание, что я не спрашиваю, как разбирать другой формат номера культуры в США. Я спрашиваю, разве parseFloat в Швеции или в Бразилии ведет себя так же, как в США, или ожидает ли он номер в своем местном формате? Или лучше подумать об этом, должен ли разработчик в Бразилии/Швеции преобразовать строки в английский формат, прежде чем он сможет использовать parseFloat после извлечения текста из текстового поля?

Пожалуйста, дайте мне знать, если это не имеет смысла.

4b9b3361

Ответ 1

parseFloat не использует ваше определение локали, а определение десятичного литерала.

Он анализирует только . не ,

Я бразильский, и я должен заменить запятую точкой перед анализом десятичных чисел.

спецификация parseFloat

Ответ 2

Нет, parseFloat указано для разбора DecimalLiterals, которые используют точку как десятичный разделитель. Он не зависит от текущих настроек локали среды.

Ответ 3

Это не только Швеция/Бразилия. F.ex в США часто добавляют запятые в больших количествах, например $5,762,325.25.

Функция parseFloat по существу имеет дело с десятичными знаками, а не с языковыми строками.

В общем, JavaScript иногда может преобразовывать общие строки/числа/даты в формат, совместимый с языком, но не наоборот.