Scripts

afronden($getal, afronding)

Deze functie is een net andere versie van round(), maar kan afronden op hele getallen (zoals 20). Het rond dus getallen af naar een veelvoud van $afronding. afronden(122, 10); geeft 120, omdat 120 het dichtstbijzijnde veelvoud van 10 is. Zo geeft afronden(9.95, 10); dus 10 terug terwijl afronden(234.281, 0.105); 234.255 teruggeeft. Zie bijvoorbeeld: http://www.zunflappie.nl/temp/afronden.php?afronding=20 http://www.zunflappie.nl/temp/afronden.php?afronding=5 http://www.zunflappie.nl/temp/afronden.php?afronding=8 Werkt zowel met decimalen etc. Vooral bruikbaar (in reallife) bij hoeveel geld je hebt. Als je 1228,28 euro hebt noem je dat 1200 euro. In deze functie is dat: afronden(1228.28, 100); , wat dus 1200 geeft. [BIJGEWERKT!!!] Deze functie kan vanaf nu ook tijden afronden. Afronden kan op uren, minuten en seconden. Zie bijvoorbeeld: http://www.zunflappie.nl/temp/afronden.php?afronding=0:30 http://www.zunflappie.nl/temp/afronden.php?afronding=0:00:30 http://www.zunflappie.nl/temp/afronden.php?afronding=4:00

afrondendollargetal-afronding
<?php

// functie: afronden()
// gebruik: afronden($getal, $afronding);
// return: $double;
// auteur: Eddy Erkelens

// functie afronden($getal, $afronding)
function afronden($getal, $afronding)
	{
	// controleer of getallen een getal zijn (zo nee: tijd?)
	if(!is_double($getal) AND !is_int($getal) AND (!is_double($afronding) AND !is_int($afronding)))
		{		
		// als dit getal een : bevat (dus een tijd is, welke ook am/pm kan bevatten)
		if(strpos($getal, ":") AND strpos($afronding, ":"))
			{			
			// bereken tijd
			$tijd = strtotime("1-1-1970 " . $getal) + 3600;
			$afronding = strtotime("1-1-1970 " . $afronding) + 3600;
			$tijd_afgerond = afronden($tijd, $afronding) - 3600;
			
			// maak format (afhankelijk van am/pm)
			$format = "H:i:s";
			//if(strpos($getal, "am") OR strpos($getal, "pm")){$format .= " a";}

			// waarde returnen
			return date($format, $tijd_afgerond);	
			}
		else
			{
			// gewoon een loze string
			return $getal;
			}
		}
	else
		{
		// controleer of de getallen geen 0 zijn
		if ($getal == 0 OR $afronding == 0)
			{
			return $getal;
			}
		
		// bereken getallen
		$deel_voor_komma = intval($getal / $afronding);
		$deel_na_komma = ($getal / $afronding) - intval($deel_voor_komma);
		$rest = $deel_na_komma * $afronding;
		
		// als $verschil groter is dan de helft van $afronding...
		if ($rest >= ($afronding / 2 ))
			{
			$afgerond = $getal + ($afronding - $rest);		
			}
		// als $verschil dus kleiner is dan de helft van $afronding...
		else
			{
			$afgerond = $deel_voor_komma * $afronding;
			}
		
		// geef resultaat terug
		return $afgerond;
		}
	}





// TESTEN 
// tijd testen
echo '<h2>Tijden afronden</h2>';
$tijden = array("0:00:01", "23:29:37", "02:33", "13:23:13", "23:39", "1:19:58", "23:15:58", "1:15 am", "1:15 pm");
$afronding = "0:30:30";
if(!empty($_GET['afronding'])){$afronding = $_GET['afronding'];}
foreach($tijden as $tijd)
	{
	echo "<pre>Afronden(\"".$tijd."\", \"".$afronding."\") \t\t==\t" . afronden($tijd, $afronding) . "</pre>";	
	}

// getallen testen
echo '<h2>Getallen afronden</h2>';
$i = 0;
$eind = 100;
$afronding = 20;
if(!empty($_GET['afronding'])){$afronding = $_GET['afronding'];}
$stap = 3;
while($i<$eind)
	{
	echo "<pre>Afronden($i, $afronding) \t==\t " . afronden($i, $afronding) . "</pre>";
	$i = $i + $stap;
	}
?>

Reacties

0
Nog geen reacties.