我使用五棱星創建此評分系統。我希望標題包含平均評分。所以我創造了五分之一的星星。使用「1.2」我會得到一顆全明星和一顆下一顆恆星,等等......圓整數到最接近0.2的PHP
但是我還沒有找到一個好的方法來湊近最接近的.2 ...我想我可以乘以10,然後轉一圈,然後運行一個開關到1到2,3到4,等等。但是,這似乎有些單調乏味和不必要的......
我使用五棱星創建此評分系統。我希望標題包含平均評分。所以我創造了五分之一的星星。使用「1.2」我會得到一顆全明星和一顆下一顆恆星,等等......圓整數到最接近0.2的PHP
但是我還沒有找到一個好的方法來湊近最接近的.2 ...我想我可以乘以10,然後轉一圈,然後運行一個開關到1到2,3到4,等等。但是,這似乎有些單調乏味和不必要的......
round(3.78 * 5)/5 = 3.8
function round2($original) {
$times5 = $original * 5;
return round($times5)/5;
}
所以你總爲25,將有可能不使用浮標和使用1-> 25/25?這樣,有較少的計算需要...(如果有的話)
+1 - 這是一個很好的觀點,但我假設1.2或1.17的分數或其他任何實際上是平均值,所以無論如何都會有一些分數涉及 – nickf 2009-04-28 06:59:42
的靈活解決方案
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);
優雅,但你缺少一些「$」 – 2009-04-28 07:13:53
爲什麼每個人都給予需要更深層次的檢查或轉換解決方案?想要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 //
就這麼簡單。
太棒了!我知道必須有一個簡單的解決方案。感謝(: – peirix 2009-04-28 07:35:29
一個輝煌的解決方案!謝謝! – alumi 2014-01-07 07:31:56