问题描述
当我输出一些双变量时,它们使用 fwrite 以指数形式写入.我可以在 PHP 中设置一些默认值,无论何时显示(复制或存储)一个变量,它总是以十进制格式发生?
When i'm outputting some of my double variables they're being written in exponential form using fwrite. Can i set some defaults in PHP where whenever a variable is displayed (copied or stored) it always happens in decimal format?
确切地说,当我在包含双精度值(不是指数形式)的 json 字符串上使用 json_decode 方法时会出现问题.转换对象后的双精度值变成指数.
To be precise the problem occurs when i use the json_decode method on a json string which contains a double value (which is not in exponential form). That double value after converting an an object becomes exponential.
推荐答案
假设数字在写入时仍然是浮点数(而不是字符串),这是一种方法:
Assuming the numbers are still floats when being written (as opposed to strings), this is one way of doing it:
echo rtrim(sprintf("%0.15f", $x), "0.");
我不确定是否有更清洁的方法.但基本上这使用 sprintf
打印最多 15 个小数位,然后修剪掉任何尾随的 0
或 .
字符.(当然,不能保证一切都会如您所料的那样用尾随零四舍五入.)
I'm not sure if there's a cleaner way or not. But basically this uses sprintf
to print a maximum of 15 decimal places, and then trims off any trailing 0
or .
chars. (Of course, there's no guarantee that everything will be rounded nicely with trailing zeros as you might expect.)
如果你只是想要一个固定的大小,那么你可以调整15
并删除rtrim
.
If you just want a fixed size, then you can adjust the 15
and remove the rtrim
.
这篇关于PHP以指数形式输出数字的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!