PHP ile yakın 0.2 için yuvarlak sayı

3 Cevap php

Ben 5 kenarlı yıldız kullanarak bu derecelendirme sistemi oluşturma. Ve ben başlığı ortalama derece dahil etmek istiyoruz. Yani 1/5ths gösteren yıldızlı oluşturduk. Ben böylece bir sonraki yıldızı ve tam bir yıldız ve bir puan alırsınız "1.2" kullanarak ...

Ama en yakın 0,2 kadar yuvarlamak için iyi bir yol bulmuş değil ... Ben, 10 ile çarpın daha sonra yuvarlak, ve sonra 2 kadar 1 yuvarlamak için bir anahtarı çalıştırın 3 4 kadar ve bu yüzden düşündüm üzerinde. Ama bu sıkıcı ve gereksiz görünüyor ...

3 Cevap

Bir esnek çözüm

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 );

> 25/25 - Böylece toplam katları kullanmak ve 1 kullanmak mümkün olacak, 25 mi? Bu yolu var ... gereken daha az hesaplamalar (varsa tüm)

Neden herkes derin bir muayene veya dönüşüm gerektiren çözümler veriyor? 0.2 ister misiniz? Daha sonra:

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

5 istiyorsun? Daha sonra:

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

Bu kadar basit.