2009-04-28 79 views
6

我使用五棱星創建此評分系統。我希望標題包含平均評分。所以我創造了五分之一的星星。使用「1.2」我會得到一顆全明星和一顆下一顆恆星,等等......圓整數到最接近0.2的PHP

但是我還沒有找到一個好的方法來湊近最接近的.2 ...我想我可以乘以10,然後轉一圈,然後運行一個開關到1到2,3到4,等等。但是,這似乎有些單調乏味和不必要的......

回答

27
round(3.78 * 5)/5 = 3.8 
+0

太棒了!我知道必須有一個簡單的解決方案。感謝(: – peirix 2009-04-28 07:35:29

+0

一個輝煌的解決方案!謝謝! – alumi 2014-01-07 07:31:56

4
function round2($original) { 
    $times5 = $original * 5; 
    return round($times5)/5; 
} 
3

所以你總爲25,將有可能不使用浮標和使用1-> 25/25?這樣,有較少的計算需要...(如果有的話)

+0

+1 - 這是一個很好的觀點,但我假設1.2或1.17的分數或其他任何實際上是平均值,所以無論如何都會有一些分數涉及 – nickf 2009-04-28 06:59:42

18

的靈活解決方案

function roundToNearestFraction($number, $fractionAsDecimal) 
{ 
    $factor = 1/$fractionAsDecimal; 
    return round($number * $factor)/$factor; 
} 

// Round to nearest fifth 
echo roundToNearestFraction(3.78, 1/5); 

// Round to nearest third 
echo roundToNearestFraction(3.78, 1/3); 
+0

優雅,但你缺少一些「$」 – 2009-04-28 07:13:53

1

爲什麼每個人都給予需要更深層次的檢查或轉換解決方案?想要0.2?然後:

round($n/0.2) * 0.2; // $n = 3.78/0.2 = 18.9 (=) 19 * 0.2 = 3.8 // 

想要5?然後:

round($n/5) * 5; // $n = 17/5 = 3.4 (=) 3 * 5 = 15 // 

就這麼簡單。