如何在 PHP 中去除尾随零
任何人都可以给我一个解释(也许是一个例子)如何使用PHP从数字中去除尾随的零。
例如:
"Lat":"37.422005000000000000000000000000","Lon":"-122.84095000000000000000000000000"
将转入:
"Lat":"37.422005","Lon":"-122.84095"
我试图去掉零,使其更具可读性。我尝试使用,但这也替换了数字内的零。str_replace()
任何人都可以给我一个解释(也许是一个例子)如何使用PHP从数字中去除尾随的零。
例如:
"Lat":"37.422005000000000000000000000000","Lon":"-122.84095000000000000000000000000"
将转入:
"Lat":"37.422005","Lon":"-122.84095"
我试图去掉零,使其更具可读性。我尝试使用,但这也替换了数字内的零。str_replace()
忘记所有的rtrims和正则表达式,坐标是浮点数,应该被视为浮点数,只需在变量前面加上,将其从字符串转换为浮点数:(float)
$string = "37.422005000000000000000000000000";
echo (float)$string;
输出:
37.422005
您拥有的实际结果是浮点数,但由于HTTP协议而作为字符串传递给您,最好将它们转换回自然形式以进行计算等。
测试用例:http://codepad.org/TVb2Xyy3
注意:关于 PHP 中浮点精度的注释,请参阅:https://stackoverflow.com/a/3726761/353790
尝试使用 rtrim:
$number = rtrim($number, "0");
如果您有一个以 0 结尾的十进制数(例如 123.000),您可能还需要删除小数分隔符,该分隔符可能因使用的区域设置而异。要可靠地删除它,您可以执行以下操作:
$number = rtrim($number, "0");
$locale_info = localeconv();
$number = rtrim($number, $locale_info['decimal_point']);
这当然不是一个防弹解决方案,可能不是最好的解决方案。如果您有一个像12300.00这样的数字,它不会从整数部分中删除尾随的0,但您可以根据自己的特定需求进行调整。