Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python, pyöristäminen

Kanarianlintu [13.11.2017 20:31:54]

#

Hei, tässä olisi kysymykseni. Olen tehnyt viiteohjelmaa, mutta enää on pienestä kiinni. Kuinka voin pyöristää esim. luvun 53 ylöspäin luvuksi 60. Tarkoitus on siis, että jos minulla on luku 53, niin minun pitäisi vähentää siitä korkeampi tasakymmenluku, eli 60. Kiitos tietäjille:-)

Jaska [13.11.2017 20:40:15]

#

import math
x = 53
print(int(math.ceil(x / 10.0)) * 10)

tulostaa 60.

Metabolix [13.11.2017 20:43:31]

#

Jakojäännös auttaa.

# Selvempi versio
def seuraava_kymmen(luku):
	jakojäännös = luku % 10
	if jakojäännös == 0:
		return luku
	else:
		return (luku - jakojäännös) + 10

# Lyhyempi versio
def seuraava_kymmen(luku):
	return luku if luku % 10 == 0 else luku - luku % 10 + 10

# Tai suoraan vähennystemppu ilman seuraavan kymmenluvun etsintää:
def miinus_seuraava_kymmen(luku):
	return -((10 - luku % 10) % 10)

Jaskan liukulukuratkaisua ei voi suositella, koska liukuluvuilla on pyöristysvirheen riski ja Pythonissa kokonaisluvut voivat olla myös suurempia kuin liukuluvut.

import math
x = 20000000000000070
print(int(math.ceil(x / 10.0)) * 10)
# tulostaa 20000000000000080 eli seuraavan kymmenen, vaikka oli jo tasakymmen.

Jaska [13.11.2017 21:09:05]

#

Pahoittelut virheellisestä koodista. Eikö seuraava pyöristä kokonaisluvut ylöspäin lähimpään kymppiin?

x = 20000000000000070
print((x + 9) // 10 * 10)
# tulostaa 20000000000000070.

Metabolix [13.11.2017 21:37:04]

#

Kyllä näin on. Hyvin huomattu.

Kanarianlintu [13.11.2017 21:40:03]

#

Kiitos teille, hieno homma:-)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta