Numerojen pyöristäminen

Lua:
Numerojen pyöristäminen

Miten:

-- Perus pyöristäminen Luassa ei tule valmiina, mutta voit määritellä funktion:

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

-- Pyöristääksesi tiettyyn desimaalipaikkaan:
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

Syväsukellus

Lua ei sisällä valmiina pyöristysfunktiota toisin kuin jotkin muut kielet. Historiallisesti sinun on täytynyt kirjoittaa oma tai käyttää kolmannen osapuolen kirjastoa. Yleisiä kiertotapoja ovat math.floor() käyttäminen pyöristettäessä alas ja math.ceil() pyöristettäessä ylös, yhdistettynä 0.5 lisäämiseen tai vähentämiseen ennen sitä riippuen numeron merkistä.

Vaihtoehtoja oman funktion kirjoittamiselle ovat kirjastot, kuten “lua-users wiki” tai “Penlight”. Kullakin on etunsa ja haittansa, kuten lisäominaisuudet tai suurempi ylikuormitus.

Sisäisesti nämä funktiot toimivat yleensä hyödyntämällä sitä, miten tietokoneet tallentavat liukulukuarvoja. Positiivisen liukuluvun, jonka haluat pyöristää, lisääminen 0.5:llä työntää sen seuraavan kokonaislukualueen kynnyksen yli, joten kun käytät math.floor()-funktiota, se pyöristää sen lähimpään kokonaislukuun.

Katso myös