2012-01-23 15 views
0

例えば、rand(10000000, 3000000);で緯度と経度のデータを生成しています。しかし、私は2つの場所間の距離を計算する必要があるので、基本的に私の結果に変換する必要があります。たとえば、2204925622.049256に変換して、私の関数に渡します。2つの最初の数字の後ろに小数点を追加する

これを最小限のリソースで最大限に達成する方法を教えてください。

TL; DR 私は整数22049256を持っており、floatに変換する必要があります22.049256です。

+0

最小値が最大値より大きい。打ち間違え? – Corubba

答えて

6

1Mで割る?

22049256/1000000 = 22.049256

+0

変数を明示的に宣言している場合、結果は浮動小数点になります。 – Kypros

+0

ありがとう、私の愚かな今これを自分で把握する。しかし、再び私はそれほど明るくない:)再びありがとう。 – sed

4
$foo = rand(10000000, 30000000); 
$foo /= 1000000; 
echo $foo; 
-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); 
0

あなたは常に最初の2桁の数字の後に小数点以下をしたい場合トリックを行う。

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

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

基本的にはちょうどあなたの元の番号にありますどのように多くの文字を確認することで作られた数で割ます。

関連する問題