webForumDet fria alternativet

Sekunder till timmar, minuter och sekunder.

9 svar · 949 visningar · startad av Fredde Mannen

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#1

Rent matematiskt hur skulle du ställa upp 2345 sek så att det blir timmar, minuter och sekunder??

GunnarDMedlem sedan juni 20014 290 inlägg
#2

Enkelt.

tim = tal / 3600, om nödvändigt ta bort decimalerna
min = (tal - (tim*3600)) / 60, om nödvändigt ta bort decimalerna
sek =tal - tim*3600 - min*60

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#3

GunnarD skrev:

Enkelt.

tim = tal / 3600, om nödvändigt ta bort decimalerna
min = (tal - (tim*3600)) / 60, om nödvändigt ta bort decimalerna
sek =tal - tim*3600 - min*60

oki.

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#4

Så enligt formeln:

tim = tal / 3600, om nödvändigt ta bort decimalerna
min = (tal - (tim*3600)) / 60, om nödvändigt ta bort decimalerna
sek =tal - tim*3600 - min*60

så får vi.. genom att använda 2304 sekunder

Så bör jag få:

timmar = 0,64 <- Timmar, 0,64???
minuter = 0
sekunder = 0

Men timmar 0,64!

OBS! Minuter och sekunder är avrundade till närmaste heltal.

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#5

Fick denna formel av en annan kille:

hours = numsec / 3600;
numsec = numsec % 3600;
minutes = nmumsec / 60;
seconds = numsec % 60;

Om det nu är C++ eller PHP eller nåt annat det är en sak... men vad menas med % <- detta tecken..

@ndersMedlem sedan juni 200032 969 inlägg
#6

Det borde väl betyda modulus, dvs rest vid heltalsdivision.

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#7

okey...

Men min andra formel som jag fick funkade fint, men att den fortfarande ger timmar i i decimalform??

Dom om jag har 1200 sek så får jag 0,33 timmar och 20 minuter och 0 sekunder...

confused!!! :q

Fredde MannenMedlem sedan nov. 20014 054 inlägg
#8

Okey... tog bort det efter decimalerna och då funkade det bättre! :)

GunnarDMedlem sedan juni 20014 290 inlägg
#9

> timmar = 0,64 <- Timmar, 0,64???

Riktigt, så tar man bort decimalerna så blir timmar 0 (1 timme är 3600 sekunder)

> minuter = 0

min = (2304 - (0*3600))/60 = 38,4

> sekunder = 0

sek = 2304 - 0*3600 - 38*60 = 24

2304 sekunder = 0 timmar, 38 minuter och 24 sekunder.

Engine^Medlem sedan dec. 20003 887 inlägg
#10

Det här kan tyckas vara ett långt svar, men jag tror att det förklarar det mesta :)

Fredde Mannen skrev:

okey...

Men min andra formel som jag fick funkade fint, men att den fortfarande ger timmar i i decimalform??

Dom om jag har 1200 sek så får jag 0,33 timmar och 20 minuter och 0 sekunder...

confused!!! :q

1200 sekunder av en timme (=3600 sekunder) är en tredjedels timme (1200/3600 = 1/3) d.v.s. 20 minuter. Det matematiska svaret 0.3 (strecket ska vara ovanför trean och betyder upprepning) timmar är således helt korrekt, även om det nu blir oändligt många treor efter kommat. Svaret att 1200 sekunder är detsamma som en tredjedels timme och 20 minuter alltså helt fel (svaret borde ha varit 0.33 timmar eller 20 minuter eller 1200 sekunder).

Problemet är att du räknar här med tid och inte tal, som vi vanligtvis gör. (1 timme = 60 minuter, 1 minut = 60 sekunder. Överförklarat så är 10 timmar inte detsamma som 100 minuter, utan 600 minuter.)

[u][b]Formel[/b][/u]
antaltimmar(h) = 0
antalminuter(m) = 0
antalsekunder(s) = 4567
sekunderkvar(sk) = s

1. Medan sk är större än 3600
  1.1 öka h med ett
  1.2 minska sk med 3600
  1.3 upprepa
2. m = sk
3. Medan sk är större än 60
  3.1 öka m med ett
  3.2 minska sk med 60
  3.3 upprepa
4. s = sk

En körning...

h = 0 + 1
sk = 4567 - 3600
m = 967
m = 0 + 1
sk = 967 - 60
m = 1 + 1
[i]osv...[/i]
m = 15 + 1
sk = 67 - 60
s = 7

4567 sekunder = 1 timme, 16 minuter och 7 sekunder
133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)