我要显示到小数点后一位的距离计算结果

Distance calculation results which I want to display to one decimal place

我这里是计算两个经纬度之间的距离。它工作正常。我得到类似“7.4055315795109”的结果,但我不想显示这么多小数位。我的预期结果是“7.4”。我怎样才能得到我预期的答案?

我的代码:

 <?php
function distance($lat1, $lon1, $lat2, $lon2, $unit) 
{ 
   $theta = $lon1 - $lon2; 
   $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); 
   $dist = acos($dist); 
   $dist = rad2deg($dist); 
   $miles = $dist * 60 * 1.1515;
   $unit = strtoupper($unit);

   if ($unit == "K") 
   {
      return ($miles * 1.609344); 
   } 
   else 
   {
      return $miles;
   }
}

// Kilometres
echo distance('12.91747','77.6220413','12.9577129','77.6764937', "K");
?>

要完成一位数的精度舍入,您正在寻找 built-in 函数 round 应该有所帮助 - 像这样:

function distance( $lat1, $lon1, $lat2, $lon2, $unit='M' ) { 
   $theta = $lon1 - $lon2; 
   $dist = sin( deg2rad( $lat1 ) ) * sin( deg2rad( $lat2 ) ) +  cos( deg2rad( $lat1 ) ) * cos( deg2rad( $lat2 ) ) * cos( deg2rad( $theta ) ); 
   $dist = acos( $dist ); 
   $dist = rad2deg( $dist ); 
   $miles = $dist * 60 * 1.1515;
   $unit = strtoupper( $unit );

   if( $unit == "K" ) {/* round the output and reduce precision to 1 digit */
      return round( ( $miles * 1.609344 ), 1, PHP_ROUND_HALF_UP ); 
   } else {
      return round( $miles, 1, PHP_ROUND_HALF_UP );
   }
}

echo distance('12.91747','77.6220413','12.9577129','77.6764937', "K");

//outputs 7.4