PHP: Почему точка в десятичной дроби заменяется запятой при приведении к строке?

В 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

Что вызывает это поведение?

1

Решение

Если вы прочитали руководство или проверить с помощью 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, если кто-нибудь знает, пожалуйста, отредактируйте 🙂

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]