PHP JSON кодировать число с плавающей запятой

это кажется простой вещью: я хотел бы закодировать:

echo json_encode(array('lol' => 104564563225.1));

дает:

{"lol":1.0e+11}

Я хотел бы быть на выходе:

{"lol":104564563225.1}

Как этого достичь?
немного больше данных сервера на всякий случай:

PHP Version 5.6.0
System  Windows NT XXXXXXXXXXXXXX 6.3 build 9200 (Windows Server 2012 R2
Standard Edition) i586
Build Date  Aug 27 2014 11:49:46
Compiler    MSVC11 (Visual C++ 2012)
Architecture    x86
Configure Command   cscript /nologo configure.js "--enable-snapshot-   build" "--enable-debug-pack" "--disable-zts" "--disable-isapi" "--disable-nsapi" "--without-mssql" "--without-pdo-mssql" "--without-pi3web""--with-pdo-oci=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--with-oci8-12c=c:\php-sdk\oracle\x86\instantclient_12_1\sdk,shared" "--with-enchant=shared" "--enable-object-out-dir=../obj/" "--enable-com-dotnet=shared" "--with-mcrypt=static" "--without-analyzer" "--with-pgo"Server API  CGI/FastCGI
Virtual Directory Support   disabled
Configuration File (php.ini) Path   C:\Windows
Loaded Configuration File   C:\Program Files (x86)\PHP\v5.6\php.ini

0

Решение

Строковое представление чисел с плавающей запятой зависит от precision конфигурация (см. документацию на php.ini директивы).

Также, echo(104564563225.1); должен отображать то же значение, что и json_encode() производит.

По умолчанию precision является 14 и с этим значением ваш код отображает:

{"lol":104564563225.1}

Может быть, это имеет меньшее значение в вашей системе.

Вы можете получить его текущее значение из вашего скрипта, используя ini_get():

echo(ini_get('precision'));

и вы можете изменить его, используя ini_set():

ini_set('precision', '14');

Конечно, поиск и изменение его в вашем php.ini это еще один вариант, если он доступен для вас.

1

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

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

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