【问题标题】:php JSON encode float numberphp JSON 编码浮点数
【发布时间】:2015-01-27 11:26:29
【问题描述】:

这似乎是一件简单的事情:我想编码:

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 

【问题讨论】:

  • echo json_encode(array('lol' => 104564563225.1));输出是 {"lol":104564563225.1} PHP 版本 5.6.4 可能是 google 以查找您的版本或构建中的错误
  • 我会更新PHP版本并再次检查。 php.net/downloads.php
  • 我通过卸载由 MS Web 平台安装程序安装的 php 版本来管理它,停止服务器并重新安装它。现在它工作正常。谢谢!使用 WPI,Php 的最新版本是 5.6.0

标签: php json floating-point


【解决方案1】:

浮点数的字符串表示取决于precision 配置(请参阅其关于php.ini 指令的文档)。

此外,echo(104564563225.1); 应显示与 json_encode() 生成的值相同的值。

默认情况下,precision14,您的代码将显示此值:

{"lol":104564563225.1}

也许它在您的系统上的价值较低。

您可以使用 ini_get() 从脚本中获取其当前值:

echo(ini_get('precision'));

您可以使用ini_set() 更改它:

ini_set('precision', '14');

当然,在您的 php.ini 中搜索和更改它是另一种选择,如果您可以使用的话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-31
    • 2023-03-12
    • 2015-06-14
    • 2012-03-13
    • 2015-05-28
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    相关资源
    最近更新 更多