在两个第一个数字后添加一个小数

时间:2012-01-23 15:46:24

标签: php

我正在使用rand(10000000, 3000000);生成一些纬度和经度数据。但我需要计算两个位置之间的距离,所以基本上我需要将我的结果转换为2204925622.049256才能传递给我的函数。

如何使用最少量的资源最有效地实现这一目标?

TL; DR 我有整数22049256,需要转换为float 22.049256

4 个答案:

答案 0 :(得分:6)

除以1M?

22049256 / 1000000 = 22.049256

答案 1 :(得分:4)

$foo = rand(10000000, 30000000);
$foo /= 1000000;
echo $foo;

答案 2 :(得分:0)

如果你总是想要前两位数之后的小数,那就应该这样做。

<?php
    $n = rand(10000000, 3000000);
    $len = strlen($n);
    $div = pow(10, $len - 2);
    $n /= $div;
    var_dump($n);
?>

http://codepad.viper-7.com/Nrql15

基本上只需要通过检查原始数字中有多少个字符来划分数字。

答案 3 :(得分:-2)

最简单的方法是将数字视为一个字符串并迭代它,在适当的位置添加小数点。

$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);