Seuraa 
Viestejä24
Liittynyt9.1.2015

Erään lyhyen tuloperiaatelaskun ratkaisu on 45 * 10^4=125h eli runsaat viisi vuorokautta. 46 * 10^4 on 450 000s. Jaoin 450 000s 3600 jolloin sain 125 joten tiedän käytännössä mitä pitää tehdä, mutta kuinka oikeen tulisi ajatella oikeaoppisesti sekuntien ja minuuttien muunnot vuorokaudeksi ja toisinpäin? Vähän hämäränpeitossa koko asia enkä googlettamalla löytänyt hyviä nettisivustoja joista saisi selvennystä asiaan.

Kommentit (4)

Neutroni
Seuraa 
Viestejä28275
Liittynyt16.3.2005

Jos meillä on kokonaisluku sekunteina, jaetaan se kokonaislukujakona 60:lla. Jakojäännös on sekunnit. Jaetaan osamäärä edelleen 60:lla. Jakojäännös on minuutit. Jaetaan osamäärä 24:lla ja saadaan jakojäännökseen tunnit. Osamäärä on tässä vaiheessa kokonaiset vuorokaudet.

Esimerkki:

t=123456 s

123456/60 = 2057, jakojäännös on 36.

2057/60 = 34, jakojäännös on 17

34 / 24 = 1, jakojäännös on 10.

AIka on siis 1 d 10 h 17m 36s

Toisinpäin mennään niin, että otetaan vuorokaudet ja kerrotaan 24:lla, jolloin saadaan tunteja. Lisätään tunnit ja kerrotaan 60:lla, jolloin saadaan minuutit, lisätään minuutit ja kerrotaan 60:lla, jolloin saadaan sekunnit ja lisätään sekunnit, jolloin meillä on aika sekunteina.

Esimerkki:

t = 1d 10h 17m 36s

1 * 24 = 24

(24+10)*60 = 2040

(2040 + 17)*60 = 123420

123420 + 36 = 123456

 

Ertsu
Seuraa 
Viestejä6731
Liittynyt8.11.2007

Siis mitä ihmettä, kun yksinkertaisesta asiasta voi saada noin monimutkaisen? Tunnissa on 3600 sekunttia ja vuorokaudessa 24*3600=86400 sekunttia.

Neutroni
Seuraa 
Viestejä28275
Liittynyt16.3.2005
Ertsu
Siis mitä ihmettä, kun yksinkertaisesta asiasta voi saada noin monimutkaisen? Tunnissa on 3600 sekunttia ja vuorokaudessa 24*3600=86400 sekunttia.

Odotan mielekiinnolla yksinkertaisempaa algoritmia noihin muunnoksiin. Tiedän kyllä, että nopeampia algoritmeja voi olla (riippuen suorittimesta), mutta ne ovat monimutkaisempia.

korant
Seuraa 
Viestejä8326
Liittynyt16.12.2013

Useissa ohjelmointikielissä ja laskimissa on muunnos valmiina. Mutta jos sellaisia ei ole niin tuo Neutronin esittämä tapa on varmasti yksinkertaisin ja selkein. Date-muuttuja antaa suoraan päivämäärän ja kellon ajan kun sen desimaalimuodon kokonaisosa ilmaisee vuorokaudet tietystä sovitusta päivämäärästä alkaen ja desimaaliosaan sisältyy tunnit, minuutit ja sekunnit. Varsinkin tiettyjen päivämäärien välisen aikaeron saa tällä muuttujalla helposti kun muuten on melko mutkikasta laskea jos aikaväli on kuukausia.

Suosituimmat

Uusimmat

Uusimmat

Suosituimmat