afrondendollargetal-afronding
Gesponsorde koppelingen
PHP script bestanden
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?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;
}
?>
// 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;
}
?>