2014-10-08 155 views
-2

我正在嘗試做一個需要的活動,以cm爲單位放置一個數字,並且程序必須以km,m和cm爲單位返回它。將釐米轉換爲公里,米和釐米

舉例: 270004 cm = 2km,700m,4cm // 100cm = 0km,1m,0cm。

我已經完成了這段代碼,但是,有時我會得到負數,有時我會得到奇怪的數字。

也許是爲什麼我用PHP_ROUND_HALF_UP

我能做些什麼來解決它?

//I have an HTML form to introduce the number value 
$num = 123456789; 

$km = $num/1000; 
$km = round($km, 0, PHP_ROUND_HALF_UP); 
echo "km: ".$km."<br>"; 

$subtraction = ($km * 1000) - $num; 
$m = $subtraction/100; 
$m = round($m, 0, PHP_ROUND_HALF_UP); 

echo "m: ".$m."<br>"; 

$subtraction2 = ($m * 100) - $subtraction; 
$cm = $subtraction2; 

echo "cm: ".$cm."<br>";   
+0

可以共享輸入數字和陌生號碼的結果嗎? – 2014-10-08 21:02:18

+0

什麼是'$ resta =($ km * 1000) - $ num;'應該這樣做?這可以很容易地給你一個負面的,特別是如果你已經上漲了千米而不是下降 – 2014-10-08 21:02:23

+0

例如,我得到123456789號:km:123457米:2釐米:-11,我想得到:1234公里,567我的89釐米。 – blaclotus 2014-10-08 21:06:17

回答

6

老實說,你的代碼似乎有點過於複雜:P有沒有聽說過模分裂?在這裏派上用場!

<?php 

$x = 123456789323; // centimeters 

$km = floor($x/100000); // amount of "full" kilometers 
$rkm = $x % 100000; // rest 

$m = floor($rkm/100); // amount of "full" meters" 
$cm = $rkm % 100; // rest 

echo $x . ' cm = ' . $km . ' kilometers ' . $m . ' meters and ' . $cm . 'centimeters' . PHP_EOL; 
1
$cm = 234459891345; 

echo sprintf('km: %02d m: %02d cm: %02d', ($cm/100000),($cm/100%100), $cm%100); 
+0

有點解釋會很好! – gsamaras 2014-10-08 23:00:34

相關問題