2012-10-07 71 views
-2

有內置功能的替代做後續的同一個作業:PHP數學函數

$price = round($price,-(strlen(ceil($price))-2)); 

例如:

$price = 1485; 
echo $price = round($price,-(strlen(ceil($price))-2));//output 1500 

$price = 148; 
echo $price = round($price,-(strlen(ceil($price))-2));//output 150 
+1

嗯,你可以編寫自己的自定義函數這樣做。 – lanzz

+1

幸運的是,在許多蹩腳的內置函數中,沒有您要求的類型。所以如果你需要的話,你必須自己寫。 –

回答

1

據我所知,沒有這樣的內置函數。

但是,您可能如下縮短期限:

$price = round($price/100)*100; 
+0

不起作用,它返回112500爲112540 – tarek

+0

在這種情況下,您的代碼產生110000,但是在Terry哈維的回答表明你想要產生112600.這可以通過以下代碼來實現: $ price = ceil($ price/100)* 100; 你應該提供更多的例子來展示你真正想要達到的目標。 – Thomas

+0

對不起,不是112600這是112550 – tarek

1

你總是可以讓你自己:

function price($str) { 
    $str = round($str,-(strlen(ceil($str))-2)); 
    return $str; 
} 

// Call function 
echo price(1485); 

特里

+0

此功能將不適用於更大的數字,如112540返回110000 我想獲得112600而不是 – tarek

+0

下面的傢伙已經想出了一個解決方案。 vvv –

0

你只是四捨五入g關閉到最近的50.試試這個:(round($price/50))*50

+0

['浮點數計算引入不準確性](http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html),這是它們不被推薦用於價格計算的原因。 – lanzz

+0

@lanzz這只是一個選擇。他可以寫一個自定義函數,如你所說,如果它真的會涉及到價格計算:) – venkatKA

+0

這也返回112550爲112540 – tarek