заметки на полях

Блокнот разработчика

Как float зависит от локали?!

На такой казалось бы элементарный вопрос далеко не тривиальный ответ, и столкнувшись с ним может пострадать не один монитор или клавиатура от нелепости ситуации, мне повезло – я вовремя нагуглил правильный ответ :) Теперь собственно к делу. Вот код и ожидаемый результат его выполнения:

$float = "3.14";
echo $float; // 3.14
echo floatval($float); // 3.14

У меня же получился другой вариант, от которого я честно говоря подвис:

$float = "3.14";
echo $float; // 3.14
echo floatval($float); // 3,14

Выяснилось что результат зависит от установки локали, у меня стояло: setlocale(LC_ALL, "ru_RU.UTF8"); пока остановился на таком варианте:

setlocale(LC_CTYPE, "ru_RU.utf8");
setlocale(LC_TIME, "ru_RU.utf8");

PHP у меня 5.2.10, а баг сей я так понимаю тащится аж с 2002 года версии 4.3.0 RC2: Bug #17079 setlocale changes the internal representation of floats

Tags:

One Response to “Как float зависит от локали?!”

  1. Перевод сайта c cp1251 на UTF-8 » Blog Archive » заметки на полях Says:

    [...] debian, php « Как float зависит от локали?! [...]

Leave a Reply