如果定义了精度,PHP round将添加小数

如果定义了精度,PHP round将添加小数,php,rounding,Php,Rounding,我到处都找过了,但我似乎找不出答案。我有一堆坐标,最多有6个小数位,我想把所有东西四舍五入到只有2个小数位 例如,一个数字可以是“82.599899”,它应该是“82.60”。问题是,如果我使用round($number,2),它会变成这样: 82.5999999994316 因此,一系列例子如下: round(82.599899); //returns 83 round(82.599899, 2); //returns 82.599999999999994316 floor(82.59989

我到处都找过了,但我似乎找不出答案。我有一堆坐标,最多有6个小数位,我想把所有东西四舍五入到只有2个小数位

例如,一个数字可以是“82.599899”,它应该是“82.60”。问题是,如果我使用round($number,2),它会变成这样:

82.5999999994316

因此,一系列例子如下:

round(82.599899);  //returns 83
round(82.599899, 2); //returns 82.599999999999994316
floor(82.599899* 100) / 100; //returns 82.599999999999994316
round(28.4772, 2); //returns 28.480000000000000426

我只是做错了什么吗?我以前从来没有遇到过圆形地板etz的问题,所以我现在很不清楚

对我来说,这是预期的效果

round(82.599899);  //returns 83
round(82.599899, 2); //returns 82.60
round(28.4772, 2); //returns 28.48

所以我想这是一个配置问题。您是否更改了
php.ini
中的某些内容?也许
精度
字段已从默认值更改为默认值。

对我来说,它正按预期工作。你可能改变了php.ini中的某些内容吗?不,你做得对。这个数字是存储在一个变量中,然后由另一行修改,还是直接输出?你试过在调试器中检查round()的输出吗?@khorneugh是的,我找到了,我组中一定有人更改了它。对于某些情况,php.ini中的精度值设置为20,而不是默认的14reason@Crecket这解决了你的问题吗?@KhorneHoly是的,将其作为答案提交,我会为你标记是的,在php.ini中有一行精度=?它被设置为20,而不是默认值14