我有谷歌坐标,我必须改变,但当我回应它们时,例如,
echo (string)28.9871692657471;
我得到
的结果28.987169265747
最后“1”消失
echo (string) 28.9875984191895
最后“5”消失
我尝试直接回显它,没有强制转换,但没有任何改变,我想要做的就是进行这个基本操作,
28.9875984191895 + 0.0000000000001 = 28.9875984191896
我有什么遗失的吗?因为我在互联网上搜索时找不到任何相关内容
答案 0 :(得分:4)
浮点数不够准确,但无论如何php.ini
设置precision
会影响浮点数转换为字符串时显示的小数位数,因此请尝试调整(编辑php.ini
文件,或使用ini_set("precision",50);
)
答案 1 :(得分:2)
根据PHP docs on floating point numbers:
所以永远不要将浮点数结果信任到最后一位数,并且不要直接比较浮点数是否相等。如果需要更高的精度,arbitrary precision math functions和gmp函数可用。
答案 2 :(得分:1)
试一试
echo bcadd("28.9875984191895", "0.0000000000001", 13);
最后一个参数是要显示的小数位数