Zaokrouhlování
Lua má sbírku hotových matematických funkcí jménem math. Voláte je stejně jako print: napíšete název a za něj do závorek hodnoty. Na rozdíl od print ale nic nevypisují. Spočítají výsledek a vrátí ho: předají ho zpátky programu, který ho může vypsat nebo uložit do proměnné.
Dvě z nich zaokrouhlují:
math.floor(x)zaokrouhlí dolů, k podlaze (anglicky floor):math.floor(3.7)je3.math.ceil(x)zaokrouhlí nahoru, ke stropu (ceil je zkratka anglického ceiling, strop):math.ceil(3.2)je4.
Obě vrátí celé číslo. Tak se taky zbavíte .0 po dělení:
local vaha = 7.6 -- dýně v kilogramech
print(math.floor(vaha))
print(math.ceil(vaha))
print(10 / 2)
print(math.floor(10 / 2))Vypíše:
7
8
5.0
5Dolů znamená směrem k menším číslům, i pod nulou: math.floor(-3.5) je -4.
Funkci, která by zaokrouhlila na nejbližší celé číslo, Lua nemá. math.round(7.6) skončí chybou attempt to call a nil value (field 'round'): v math nic jménem round není, a tak není co zavolat. Na nejbližší celé číslo zaokrouhlíte tak, že přičtete 0,5 a zaokrouhlíte dolů:
print(math.floor(7.6 + 0.5))
print(math.floor(7.4 + 0.5))Vypíše:
8
7Tři další užitečné funkce:
math.max(a, b, …)vrátí největší z hodnot, které jí dáte, amath.min(a, b, …)nejmenší. Hodnot jim můžete dát, kolik chcete.math.abs(x)vrátí absolutní hodnotu: číslo bez znaménka minus.math.abs(-3)je3.
local rano = -3 -- stupně
local poledne = 5
print(math.max(rano, poledne, 2))
print(math.min(rano, poledne, 2))
print(math.abs(rano - poledne))Vypíše:
5
-3
8Teplota stoupla o 8 stupňů. rano - poledne je -8 a math.abs z rozdílu udělá kladné číslo, ať odečítáte v jakémkoli pořadí.
math.min a math.max se hodí i pro meze. Ema má například 7 záhonů, takže i s 10 balíčky semínek jich zaseje nanejvýš math.min(balicky, 7).
Jak psát:
Pokyny
Spusťte program. Ema nemůže jít ke studni 5,625krát: musí tam jít šestkrát a při poslední cestě nese konev jen zčásti plnou. Zaokrouhlete počet cest nahoru pomocí math.ceil, aby program vypsal:
Cesty ke studni: 6Na konci programu vypište, kolik nejvíc vajec slepice snesly za jeden den. Použijte math.max se všemi třemi proměnnými:
Cesty ke studni: 6
Nejvíc vajec za den: 9Na další řádek vypište průměrný počet vajec za den, zaokrouhlený dolů: sečtěte všechny tři dny, součet vydělte 3 a zaokrouhlete dolů pomocí math.floor. (Bez zaokrouhlení by to bylo 6.6666666666667.)
Cesty ke studni: 6
Nejvíc vajec za den: 9
Průměr: 6 vajec denněZačněte programovat zdarma
4/10