Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Ruby: Luvun pyöristys yhteen desimaaliin

Sivun loppuun

koodia111 [19.07.2018 23:18:03]

#

Osaako joku kertoa mikä tässä mättää?
Koodin tulisi pyöristää luvut yhden desimaalin tarkkuuteen.

Tällä tavalla tuon pitäisi toimia:
Anna jokin desimaaliluku: 8.49334545 Luku on pyöristettynä 8.5

print "Anna jokin desimaaliluku: ";luku = gets
luku = luku.to_f * 10
luku = luku.round
luku = luku.to_f / 10
puts "Luku on pyöristettynä #{luku}" (Ruby)

Metabolix [19.07.2018 23:19:46]

#

No niinhän se toimii?

koodia111 [20.07.2018 00:31:10]

#

Siis toimii koodi, mutta järjestelmä ei sitä hyväksy vaan sanoo "Your program's output is longer than expected"

groovyb [20.07.2018 00:40:19]

#

Kyllä toimi ainakin kun testasin osoitteessa https://repl.it/repls/MarriedQuizzicalUnderstanding

koodia111 [20.07.2018 00:48:24]

#

Jep,kyllä se toimii, mutta saako tuota jotenkin toisella tapaa tehtyä, ehkäpä lyhyemmin ilman tuota, että ensin kerrotaan 10 ja sitten jaetaan?

L2-K2 [20.07.2018 01:03:15]

#

koodia111 kirjoitti:

Jep,kyllä se toimii, mutta saako tuota jotenkin toisella tapaa tehtyä, ehkäpä lyhyemmin ilman tuota, että ensin kerrotaan 10 ja sitten jaetaan?

Ensin yleisvinkki: kielen standardikirjaston dokumentaatiosta on usein apua ohjelmoitaessa.

Ikinä en ollut (tätä ennen) rubyä ohjelmoinut, mutta kirjastosta ( https://ruby-doc.org/core-2.1.2/Float.html ) löytyi, että ”round”-komento ottaa parametrinaan halutun pyöristystarkkuden.

print "Anna jokin desimaaliluku: ";luku = gets
luku = luku.to_f.round(2)
puts "Luku on pyöristettynä #{luku}" (Ruby)

Jos tuota ei olisi löytynyt tuolta, niin olisin sanonut, että tee oma funktio, jonka sisällä teet tuon ”kerro–pyöristä–jaa” -toimituksen. Siten se (toistettava) osa lyhenisi yhteen funktiokutsuun.

groovyb [20.07.2018 01:38:28]

#

koodia111 kirjoitti:

Jep,kyllä se toimii, mutta saako tuota jotenkin toisella tapaa tehtyä, ehkäpä lyhyemmin ilman tuota, että ensin kerrotaan 10 ja sitten jaetaan?

vaikka ihan:

print "Anna jokin desimaaliluku: "
luku = gets.to_f.round(2)
puts "Luku on pyöristettynä #{luku}"

*edit* kappas, L2-K2 olikin jo ehtinyt

koodia111 [20.07.2018 13:38:31]

#

kiitokset näistä!


Sivun alkuun

Vastaus

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

Tietoa sivustosta