PHP - celá a desetinná část čísla

Datum vydání: 2013-07-25 20:47:33; aktualizováno: 2013-07-25 20:47:39

Následující funkce rozdělí číslo ve formátu integer či float na desetinnou část a celou část. Pokud je číslo záporné, tak funkce vrací zápornou desetinnou část. Udělala jsem to z důvodu, aby v případě součtu celé a desetinné části vzniklo původní číslo.

Použitá PHP funkce floor zaokrouhluje dolu, funkce ceil zaokrouhluje nahoru. Jenže pro záporná čísla se tyto funkce chovají tak, jak my zrovna nepotřebujeme, proto nelze jednoduše použít pouze zaokrouhlení dolů! Je zapotřebí zkombinovat patřičně floor s ceil.

Celá a desetinná část čísla

function desetinnaCast($number) {
	if ($number > 0) {
		return $number - floor($number); // 3.14 - 3 = 0.14
	} else {
		return $number - ceil($number) ; // -3.14 - (-3) = -0.14
	}    
}

function celaCast($number) {
	if ($number > 0) {
		return floor($number); // 3.14 => 3
	} else {
		return ceil($number); // -3.14 => -3
	}
}

Příklad použití

$a = 1.234; 
$b = 1.2e3; 
$c = 1.7E+10;
$d = 7E-10;
$e = 3.14;
$f = 3.84;
$g = -3.14;
$h = -3.84;

echo $a.' desetinna cast: '.desetinnaCast($a).'
'; // 1.234 desetinna cast: 0.234 echo $b.' desetinna cast: '.desetinnaCast($b).'
'; // 1200 desetinna cast: 0 echo $c.' desetinna cast: '.desetinnaCast($c).'
'; // 17000000000 desetinna cast: 0 echo $d.' desetinna cast: '.desetinnaCast($d).'
'; // 7.0E-10 desetinna cast: 7.0E-10 echo $e.' desetinna cast: '.desetinnaCast($e).'
'; // 3.14 desetinna cast: 0.14 echo $f.' desetinna cast: '.desetinnaCast($f).'
'; // 3.84 desetinna cast: 0.84 echo $g.' desetinna cast: '.desetinnaCast($g).'
'; // -3.14 desetinna cast: -0.14 echo $h.' desetinna cast: '.desetinnaCast($h).'
'; //-3.84 desetinna cast: -0.84 echo '
'; echo $a.' cela cast: '.celaCast($a).'
'; // 1.234 cela cast: 1 echo $b.' cela cast: '.celaCast($b).'
'; // 1200 cela cast: 1200 echo $c.' cela cast: '.celaCast($c).'
'; // 17000000000 cela cast: 17000000000 echo $d.' cela cast: '.celaCast($d).'
'; // 7.0E-10 cela cast: 0 echo $e.' cela cast: '.celaCast($e).'
'; // 3.14 cela cast: 3 echo $f.' cela cast: '.celaCast($f).'
'; // 3.84 cela cast: 3 echo $g.' cela cast: '.celaCast($g).'
'; // -3.14 cela cast: -3 echo $h.' cela cast: '.celaCast($h).'
'; // -3.84 cela cast: -3