2015-01-27 3 views
0

кажется простую вещь: я хотел бы, чтобы закодировать: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

echo json_encode (array ('lol' => 104564563225.1)); вывод ** {"lol": 104564563225.1} ** с PHP версии 5.6.4 может быть google для ошибки в вашей версии или на вашей сборке – donald123

+0

Я обновлю версию PHP и снова ее проведу. http://php.net/downloads.php – user1616685

+0

Мне это удалось, удалив версии php, установленные установщиком MS Web Platform, остановите сервер и снова установите его. Теперь он работает нормально. Благодаря! Используя WPI, самая последняя версия Php - 5.6.0 – user1616685

ответ

1

Строковое представление чисел с плавающей точкой зависит от конфигурации 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 является еще если это доступно вам.

Смежные вопросы