v2.5.2
Giriş yap

PHP'de Nasıl Küsüratlı Sayı Yuvarlarım

spleidanger
533 defa görüntülendi

Herkese merhaba iyi çalışmalar
Örnek veriyorum kullanıcıdan gelen sayı 1.2 ben bunu direkt 1.5'e yuvarlamak istiyorum nasıl yapabilirim ceil() gibi fonksiyonları kullanırsam küsüratsız direkt 2'ye yuvarlıyor

Cevap yaz
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Cevaplar (1)
ebykdrms
915 gün önce

Aşağıdaki örneklerden kendinize uygun olanı seçebilirsiniz.

En yakına yuvarla: round()
https://www.php.net/manual/en/function.round.php

round(3.4);      // 3
round(3.5);      // 4
round(3.6);      // 4
round(3.6, 0);   // 4
round(5.045, 2); // 5.05
round(5.055, 2); // 5.06
round(345, -2);  // 300
round(345, -3);  // 0
round(678, -2);  // 700
round(678, -3);  // 1000
round( 1.55, 1, PHP_ROUND_HALF_UP); // 1.6
round(-1.55, 1, PHP_ROUND_HALF_UP); // -1.6
round( 1.55, 1, PHP_ROUND_HALF_DOWN); // 1.5
round(-1.55, 1, PHP_ROUND_HALF_DOWN); // -1.5
round( 1.55, 1, PHP_ROUND_HALF_EVEN); // 1.6
round(-1.55, 1, PHP_ROUND_HALF_EVEN); // -1.6
round( 1.55, 1, PHP_ROUND_HALF_ODD); // 1.5
round(-1.55, 1, PHP_ROUND_HALF_ODD); // -1.5
PHP

round()'un 3.parametresindeki sabitler:
PHP_ROUND_HALF_UP : Sayıyı 0'dan uzaklaştırarak yuvarlar.
PHP_ROUND_HALF_DOWN : Sayıyı 0'a yaklaştırarak yuvarlar.
PHP_ROUND_HALF_EVEN : Sayıyı en yakın çift sayıya yaklaştırarak yuvarlar.
PHP_ROUND_HALF_ODD : Sayıyı en yakın tek sayıya yaklaştırarak yuvarlar.

Yukarı yuvarla: ceil()
https://www.php.net/manual/en/function.ceil.php

ceil(4.3);    // 5
ceil(9.999);  // 10
ceil(-3.14);  // -3
PHP

Aşağı yuvarla: floor()
https://www.php.net/manual/en/function.floor.php

floor(4.3);   // 4
floor(9.999); // 9
floor(-3.14); // -4
PHP

Siz, sayının kendisinden büyük ilk tam veya buçuklu sayıya yuvarlanmasını istiyorsunuz.
Yani 1.2 ise, kendisinden büyük ilk tam veya buçuklu sayı olan 1.5'e yuvarlansın.
Yani 1.7 ise, kendisinden büyük ilk tam veya buçuklu sayı olan 2.0'a yuvarlansın.
Bunun için özel bir fonksiyon oluşturmanız gerekecek. Şöyle bir fonksiyon yazdım:

function roundUpHalfOrInt($num) {
    if(!is_numeric($num)) throw new Exception('Parameter of roundUpHalfOrInt() is not numeric!');
    $num = (float)$num;
    $numStr = (string)$num;
    $numArr = explode(".", $numStr);
    if(count($numArr)<2) return (float)$num;
    $numFloatSide = (int)((string)$numArr[1])[0];
    if($numFloatSide===0) return (float)$num;
    if($numFloatSide < 5) return (float)($numArr[0].".5");
    return (float)($numArr[0]+1);
}
PHP

Bu fonksiyona sayısal değeri verirseniz bahsettiğiniz şekilde yukarı yuvarlama yapacaktır.