PHPBoek();
17 Wiskundige bewerkingen
Tot nu toe hebben we vooral functies gezien die met teksten werken. Maar PHP kan ook rekenen. Naast basisbewerkingen zoals optellen en vermenigvuldigen zijn er ook functies voor meer complexe wiskundige berekeningen, zoals worteltrekken, sinus, maximum, afronden, etc.
Theorie
Rekenen in PHP kan direct met getallen, maar ook met variabelen. Al eerder hebben we gezien dat we een variabele steeds met één kunnen ophogen in een lus. Maar ook los van lussen kunnen er allerlei berekeningen op variabelen worden losgelaten.
Waarschuwing over kommagetallen
PHP kan rekenen met integers (gehele getallen) en met floats (kommagetallen). Computers zijn heel goed in het rekenen met integers, maar wat minder goed met floats, als het op nauwkeurigheid aan komt. Dit komt omdat wij gewend zijn te rekenen in het decimale stelsel met getallen 0 tot en met 9. Computers rekenen in het binaire stelsel met enkel nullen en enen. Dit binaire stelsel kent geen kommagetallen, waardoor computers op de achtergrond de kommagetallen benaderen om er toch mee te kunnen rekenen. Zo levert de berekening (0.7 + 0.1) * 10
niet zoals we geleerd hebben precies 8
op, maar komt de computer op iets als 7.9999999999999991118...
. Het verschil met acht is heel klein, maar deze nauwkeurigheidsfouten kunnen bij uitgebreide berekeningen toch grote verschillen opleveren.
In het algemeen is dit geen groot probleem, maar let op wanneer nauwkeurigheid echt van belang is. Bijvoorbeeld bij het rekenen met geld kan het geen kwaad om in centen te rekenen. Alle getallen blijven dan integers en nauwkeurheidsfouten kunnen zo vrij makkelijk voorkomen worden. Let ook goed op bij het gebruiken van kommagetallen in vergelijkingen. Probeer het volgende maar eens, inmiddels niet meer geheel onverwacht geeft dit onwaar!
if (((0.7 + 0.1) * 10) == 8) {
echo 'waar';
}
else {
echo 'onwaar';
}
?>
Tot slot, PHP gebruikt net als in Engelstalige gebieden de punt en niet de komma als decimaalscheidingsteken. Er wordt geen gebruik gemaakt van een duizendtallenscheidingsteken.
Basisberekeningen
Basisberekeningen worden uitgevoerd door eenvoudigweg het gewenste bewerkingsteken – zoals optellen, aftrekken en vermenigvuldigen – tussen de variabelen of getallen in te plaatsen. Net als in de wiskunde geldt dat vermendigvuldigen en delen boven optellen en aftrekken gaan, dus gebruik waar nodig haakjes om de juiste berekening uit te voeren. Tabel 17.1 bevat een overzicht van de beschikbare bewerkingtekens en hun betekenis.
Berekening | Naam | Resultaat | Voorbeeld |
---|---|---|---|
-$a |
Negatief | Het tegenovergestelde van $a . |
-(3) = -3 |
$a + $b |
Optellen | De som van $a en $b . |
2 + 3 = 5 |
$a - $b |
Aftrekken | Het verschil van $a en $b . |
2 - 3 = -1 |
$a * $b |
Vermenigvuldigen | Het product van $a en $b . |
2 * 3 = 6 |
$a / $b |
Delen | Het quotient van $a en $b . |
6 / 3 = 2 |
$a % $b |
Modulus | De rest van $a gedeeld door $b .Werkt alleen betrouwbaar op integers. |
5 % 2 = 1 |
$a ** $b |
Machtsverheffen | Het resultaat van $a tot de macht $b ($a $b ).Beschikbaar sinds PHP 5.6. Voor oudere versies gebruik pow($a, $b) . |
2 ** 3 = 8 |
Wiskundige functies
Naast de rekenkundige bewerkingstekens zijn er ook functies om wiskundige bewerkingen uit te voeren. In tabel 17.2 is een overzich gegeven van een groot aantal wiskundige functies. Zie de PHP handleiding voor een overzicht van alle wiskundige functies.
Functies | Naam | Resultaat |
---|---|---|
round($a, $b) |
Afronden | Geeft $a afgerond op $b decimalen.Gebruik round($a, 0) om af te ronden op integers. |
floor($a) |
Afronden naar beneden | Geeft $a als integer naar beneden afgerond. |
ceil($a) |
Afronden naar boven | Geeft $a als integer naar boven afgerond. |
abs($a) |
Absoluut | Geeft de absolute waarde van $a . |
min($a, $b) |
Minimum | Geeft de kleinste waarde van $a en $b .Deze functie accepteert ook een array als variabele. |
max($a, $b) |
Maximum | Geeft de grootste waarde van $a en $b .Deze functie accepteert ook een array als variabele. |
pow($a, $b) |
Machtsverheffen | Geeft het resultaat van $a tot de macht $b ($a $b ).Sinds PHP 5.6 kan ook $a ** $b gebruikt worden. |
sqrt($a) |
Worteltrekken | Geeft de vierkantswortel van $a . |
exp($a) |
Exponent | Geeft het exponent van $a (e $b ). |
log($a) |
Natuurlijke logaritme | Geeft de natuurlijke logaritme van $a . |
log10($a) |
Briggse logaritme | Geeft de Briggse logaritme (10-log) van $a . |
pi() |
Pi | Geeft een benadering van pi. Standaard met veertien cijfers achter de komma. |
sin($a) |
Sinus | Geeft de sinus van $a . |
cos($a) |
Cosinus | Geeft de cosinus van $a . |
tan($a) |
Tangens | Geeft de tangens van $a . |
asin($a) |
Boogsinus | Geeft de boogsinus (arcsinus) van $a . |
acos($a) |
Boogcosinus | Geeft de boogcosinus (arccosinus) van $a . |
atan($a) |
Boogtangens | Geeft de boogtangens (arctangens) van $a . |
Willekeurige getallen
De functie mt_rand()
kan gebruikt worden om een willekeurige integer te genereren.
$min
, int $max
)
mt_rand()
geeft een willekeurige integer tussen (inclusief) $min
en $max
. Wanneer $min
en $max
worden weggelaten, dan wordt een willekeurige integer tussen 0 en 2147483647 gegenereerd. Merk op dat deze functie niet zuiver willekeurig is. Wanneer oneindig vaak uitgevoerd zullen bepaalde getallen vaker voorkomen.