В PHP я обнаружил, что когда десятичная дробь выводится на экран (или: когда она преобразуется в строку), десятичный разделитель также преобразуется в запятую.
Но почему это?
Я не нашел никакой документации по этому поводу, и я не думаю, что приведение к строке учитывает настройки интернационализации.
Пример кода:
$var = 12.345;
var_dump($var); // Outputs: double(12.345)
var_dump((string)$var); // Outputs: string(6) "12,345"var_dump(str_replace(',', '.', $var)); // Outputs: string(6) "12.345"echo $var; // Outputs: 12,345
Что вызывает это поведение?
Если вы прочитали руководство или проверить с помощью Google, вы найдете ЭТОТ.
Символ десятичной точки определяется в локали скрипта
(категория LC_NUMERIC)
Теперь, если вы хотите узнать, какая десятичная точка установлена в вашей системе:
print_r(localeconv());
Который возвращает:
Array
(
[decimal_point] => .
[...many other confs...]
)
Если вы хотите установить его, используйте хороший язык: setlocale(LC_NUMERIC, $language)
я использовал fr_FR
запятую и en_US
чтобы получить точку.
Вы должны обратиться к setlocale()
руководство.
Кстати, я не знаю, как напрямую установить decimal_point
ключ массива, возвращаемый localeconv()
без изменения всей конфиги LC_NUMERIC, если кто-нибудь знает, пожалуйста, отредактируйте 🙂
Других решений пока нет …