@eugene159

На windows float выводится с запятой, а на linux с точкой. Как исправить?

Выполняю такой код на локалке (у меня windows и open server)
echo ' ' . 3.14;
Мне выводится
3,14

Выполняю на боевом (на хостинге beget), мне выводится:
3.14

Мне нужно, чтобы на локалке тоже выводилась точка. Как мне это сделать? Я думал, что проблема в локали. Я пробовал установить локаль перед выводом, это не помогло. Вот код:
<?php
setlocale(LC_ALL, 'en');
echo setlocale(LC_ALL, 0);
echo ' ' . 3.14;

Вот, что выводится:
en 3,14
То есть все равно через запятую.
  • Вопрос задан
  • 223 просмотра
Пригласить эксперта
Ответы на вопрос 1
@rPman
Удивительно, что нужно сделать с windows чтобы в php номера форматировались под настройки локали (в русской там запятая стоит, но я точно помню даже со времен winxp в официальных сборках php там возвращались точки, собственно я сейчас порыл коментарии под setlocale и там твоя проблема подтверждается)
Наверное setlocale похоже не отрабатывает корректно, покажи вывод после setlocale - localeconv, точнее что там в decimal_point будет

Советую чтобы уж точно все гарантировать, любые данные, передаваемые в браузер пропускать через json_encode, это будет гарантировать корректный формат для чтения в javascript, а в браузере уже переводи к нужному виду (формат номеров там стандартизирован и не зависит от локали)

Либо использовать number_format чтобы фиксировать свой десятичный символ вне зависимости от локалей
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы