在前两个数字后加一个小数


Add a decimal after two first numbers

例如,我正在使用rand(10000000, 3000000);生成一些经纬度数据。但我需要计算两个位置之间的距离,所以基本上我需要将结果转换为2204925622.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);