2012-01-23 4 views
0

예를 들어 rand(10000000, 3000000);으로 위도와 경도의 일부 데이터를 생성 중입니다. 하지만 두 위치 사이의 거리를 계산해야하므로 기본적으로 내 결과로 변환해야합니다 (예 : 2204925622.049256).두 개의 첫 번째 숫자 뒤의 십진수 추가

최소한의 리소스를 사용하여 가장 효과적으로이 작업을 수행 할 수 있습니까?

TL : DR 정수가 22049256이고 부동 소수점 숫자로 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

을해야 속임수를 써라.

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

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

은 기본적으로 그냥 원래의 수에 얼마나 많은 문자를 확인하여 만든 숫자로 나누어.

관련 문제