当我输出一些双重变量时,它们是使用FWRITE以指数形式编写的。我可以在PHP中设置一些默认值,每当显示变量(复制或存储)时,它总是以十进制格式发生?

确切地说,当我在JSON字符串上使用JSON_DECODE方法(包含双重值)(不在指数形式)上时,就会发生问题。转换一个对象后的双重值变为指数。

有帮助吗?

解决方案

假设数字在写时仍然是漂浮的(与字符串相反),这是一种方法:

echo rtrim(sprintf("%0.15f", $x), "0.");

我不确定是否有更干净的方式。但基本上使用 sprintf 最多打印15个小数点,然后修剪任何尾随 0 或者 . 炭。 (当然,不能保证一切都会像您期望的那样对尾随的零来完美。)

如果您只想要固定尺寸,那么您可以调整 15 并删除 rtrim.

其他提示

我也有类似的问题 json_decode 正在将最近的Twitter/Tweet ID转换为指数数字。

我通过提高PHP的浮点精度来解决它,这可以做不同的方法...

  • 找出 precision 重视您的php.ini并将其更改为 precision = 20
  • 添加 ini_set('precision', 20); 到您的PHP应用程序
  • 添加 php_value precision 20 到您的应用程序的.htaccess或虚拟主机文件

否则,如果您可以拥有 BIGINT 转换为字符串,您有php 5.3+,也可以将标志传递给 json_decode 像这样: json_decode($json, true, 512, JSON_BIGINT_AS_STRING)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top