Runden
Lua hat eine Sammlung fertiger Mathefunktionen namens math. Du rufst sie wie print auf: Schreibe den Namen und danach die Werte in Klammern. Anders als print geben sie nichts aus. Sie berechnen ein Ergebnis und liefern es zurück: Sie geben es an das Programm zurück, das es ausgeben oder in einer Variablen speichern kann.
Zwei von ihnen runden Zahlen:
math.floor(x)rundet ab, zum Boden hin:math.floor(3.7)ist3.math.ceil(x)rundet auf, zur Decke hin (ceil ist die Abkürzung für ceiling, die Zimmerdecke):math.ceil(3.2)ist4.
Beide liefern einen Integer. So wirst du auch das .0 nach einer Division los:
local gewicht = 7.6 -- ein Kürbis, in Kilogramm
print(math.floor(gewicht))
print(math.ceil(gewicht))
print(10 / 2)
print(math.floor(10 / 2))Das gibt Folgendes aus:
7
8
5.0
5Abwärts heißt zu kleineren Zahlen hin, auch unter null: math.floor(-3.5) ist -4.
Lua hat keine Funktion, die zur nächsten ganzen Zahl rundet. math.round(7.6) endet mit dem Fehler attempt to call a nil value (field 'round'): In math gibt es nichts namens round, also gibt es nichts aufzurufen. Um zur nächsten ganzen Zahl zu runden, addiere 0.5 und runde ab:
print(math.floor(7.6 + 0.5))
print(math.floor(7.4 + 0.5))Das gibt Folgendes aus:
8
7Drei weitere nützliche Funktionen:
math.max(a, b, …)liefert den größten der Werte, die du ihr gibst, undmath.min(a, b, …)den kleinsten. Du kannst ihnen so viele Werte geben, wie du willst.math.abs(x)liefert den Betrag: die Zahl ohne ihr Minuszeichen.math.abs(-3)ist3.
local morgens = -3 -- Grad
local mittags = 5
print(math.max(morgens, mittags, 2))
print(math.min(morgens, mittags, 2))
print(math.abs(morgens - mittags))Das gibt Folgendes aus:
5
-3
8Die Temperatur ist um 8 Grad gestiegen. morgens - mittags ist -8, und math.abs macht den Unterschied positiv, egal welche Zahl zuerst kommt.
math.min und math.max sind auch für Grenzen praktisch. Emma hat zum Beispiel 7 Beete, selbst mit 10 Tüten Saatgut kann sie also höchstens math.min(tueten, 7) davon bepflanzen.
So schreibst du es:
Anweisungen
- 1
Führe das Programm aus. Emma kann nicht 5,625-mal zum Brunnen gehen: Sie muss 6-mal hin, und bei der letzten Runde ist ihre Kanne nur teilweise voll. Runde die Zahl der Gänge mit
math.ceilauf, sodass das Programm Folgendes ausgibt:Gänge zum Brunnen: 6 - 2
Gib am Ende des Programms aus, wie viele Eier die Hühner an einem Tag am meisten gelegt haben. Benutze
math.maxmit den drei Variablen:Gänge zum Brunnen: 6 Meiste Eier an einem Tag: 9 - 3
Gib in der nächsten Zeile die durchschnittliche Zahl der Eier pro Tag aus, abgerundet: Zähle die drei Tage zusammen, teile die Summe durch 3 und runde mit
math.floorab. (Ohne Runden wäre es6.6666666666667.)Gänge zum Brunnen: 6 Meiste Eier an einem Tag: 9 Durchschnitt: 6 Eier pro Tag