2015-05-07 4 views
1

У меня есть странный пример. Если я пишу это:Круглый поплавок, а затем в строку локали

parseFloat("12345,987").toLocaleString("slv") 

результат будет, как и ожидалось (SLV имеет запятую в качестве десятичного разделителя): 12.345,987

Но если округлить первый 2 десятичных знаков:

parseFloat("12345,987").toFixed(2).toLocaleString("slv") 

результат будет всегда с английским сепаратором (точка): 12,345.99

Как это р жно? Это должно быть: 12.345,99

+1

Вывод parseFloat - это число, вывод toFixed - это строка. – Nit

ответ

3

Как описано в this answer, parseFloat() предназначен для использования с знаками после запятой только и, следовательно, проходящих в строке с запятой может привести к неожиданным результатам.

Например, я пробовал parseFloat("12345,987").toLocaleString("slv") в JsFiddle, и мой браузер (UK locale) дал мне 12.345, что отличается от результата.

Еще один момент, который следует отметить, заключается в том, что toFixed() возвращает строку, но toLocaleString() работает с числами. Применение строки toLocaleString() может привести к неожиданным результатам по другой причине.

1

спасибо. Я нашел решение: parseFloat ("12345,987"). ToLocaleString ("slv", {minimumFractionDigits: 2, maximumFractionDigits: 2});

Это работает нормально. «Например, я попробовал parseFloat (« 12345,987 »). ToLocaleString (« slv »)«

«djskinner» - Можете ли вы попробовать: «sl-SI» вместо slv? Он все еще не работает?

Смежные вопросы