Avrunding av tall

Lua:
Avrunding av tall

Hvordan:

-- Grunnleggende avrunding i Lua kommer ikke innebygd, men du kan definere en funksjon:

function round(num)
    return num >= 0 and math.floor(num + 0.5) or math.ceil(num - 0.5)
end

print(round(3.5))  -- 4
print(round(2.3))  -- 2
print(round(-1.6)) -- -2

-- For å avrunde til et spesifikt desimalplass:
function round(num, decimalPlaces)
    local mult = 10^(decimalPlaces or 0)
    return math.floor(num * mult + 0.5) / mult
end

print(round(3.14159, 2)) -- 3.14
print(round(1.98765, 3))  -- 1.988

Dypdykk

Lua inkluderer ikke en avrundingsfunksjon rett ut av boksen, ulikt noen andre språk. Historisk sett trenger du å skrive din egen eller bruke et tredjepartsbibliotek. Vanlige løsninger avhenger av math.floor() for avrunding nedover og math.ceil() for avrunding oppover, parret med å legge til eller trekke fra 0.5 før man gjør dette, avhengig av tallets fortegn.

Alternativer til å lage din egen funksjon inkluderer biblioteker som “lua-users wiki” eller “Penlight”. Hvert har sine fordeler og ulemper, som ekstra funksjonaliteter eller mer overhead.

Internt fungerer disse funksjonene vanligvis ved å utnytte måten datamaskiner lagrer flyttall på. Å legge til 0.5 på et positivt flyttall du vil avrunde vil dytte det over terskelen til den neste heltallsverdien, så når du bruker math.floor(), vil det runde ned til det nærmeste heltallet.

Se Også