我知道php浮点数是不准确的,我知道像BCMath和GMP这样的解决方案。 我在本地WAMP服务器
和另一台服务器(使用NGINX
)上测试了以下代码:
$size = 0.0006;
$data = json_encode( array("size" => $size));
var_dump($data);
WAMP上的输出:
string '{"size":0.0006}' (length=15)
另一台服务器上的输出:
string(31) "{"size":0.00059999999999999995}"
两台服务器上的PHP版本都是7.3
。 为什么我在WAMP上得到了预期的结果,而在我的主机服务器上出现了一些混乱? 有什么配置我可以修复吗?
您的WAMPs输出不是由PHP本身生成的,而是由Xdebug第三方扩展生成的。 更具体地说:
Xdebug取代PHP的var_dump()函数来显示变量。 Xdebug的版本包括不同类型的不同颜色,并对数组元素/对象属性的数量,最大深度和字符串长度进行了限制。
除此之外,浮动值的隐式字符串强制转换的精度是可配置的:
$size = 0.0006;
var_dump($size);
ini_set('precision', 18);
var_dump($size);
float(0.0006)
float(0.000599999999999999947)