我遇到圆形和插入数据库的问题。 执行以下操作并尝试将$ y插入Mongo将插入多个小数(类似于下面的var_export所示)。
我如何解决这个问题,因为我需要精确到2位小数。
<?php
$y = round(348.78 + 348.78 * 19/100, 2 );
var_dump($y);
var_export ($y);
这只是为了显示插入Mongo的方式的差异。
float(415.05)
415.05000000000001
答案 0 :(得分:0)
Float数据类型不是表示高精度数字的好选择。十进制是为此而制作的。
请参阅here如何(和为什么)在mongoDB
中使用十进制数字答案 1 :(得分:0)
var_export的php文档有一个有趣的评论:
从版本5.4.22看起来var_export使用了 serialize_precision ini设置,而不是使用的精度 用于浮点数的正常输出。结果是因为 例如版本5.4.22将输出var_export(1.1) 1.1000000000000001(17是默认精度值),而不是之前的1.1。
显示浮点数的默认精度为14(参见manual)。使用ini_set将serialize_precision更改为相同的值,您将获得所需的结果:
ini_set('serialize_precision', 14);
$y = round(348.78 + 348.78 * 19/100, 2 );
var_dump($y);
var_export ($y);
输出:
float(415.05)
415.05