例如,我正在使用rand(10000000, 3000000);
生成一些经纬度数据。但我需要计算两个位置之间的距离,所以基本上我需要将结果转换为22049256
到22.049256
,以便传递给我的函数。
如何使用最少的资源最有效地实现这一点?
TL;DR我有整数22049256
,需要转换为浮点22.049256
。
除以1M?
22049256 / 1000000 = 22.049256
$foo = rand(10000000, 30000000);
$foo /= 1000000;
echo $foo;
如果你总是想要前两位数字后面的小数,那就行了。
<?php
$n = rand(10000000, 3000000);
$len = strlen($n);
$div = pow(10, $len - 2);
$n /= $div;
var_dump($n);
?>
http://codepad.viper-7.com/Nrql15
基本上只是除以一个数字,这个数字是通过检查原始数字中有多少个字符而得到的。
最简单的方法是将数字视为字符串并对其进行迭代,在适当的位置添加小数点。
$new_number = '';
for($i=0;$i<strlen((string)$number;$i++)
{
if($i == 2)
$new_number .= '.';
$new_number .= substr((string)$number, $i, 1);
}
编辑:
另一种可能性是除以1000000并运行number_format以确保正确的小数位数:
$new_number = number_format($number/1000000, 6);