/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
integer og decimaler...
Fra : Flemming Hansen


Dato : 29-07-03 12:52

Hejsa,

Jeg har lavet et simpel script hvor jeg indlæser online brugere og deres
online tid. Jeg har det problem at når jeg dividerer online tid med 60 for
at finde antal minutter og dividerer med 3600 for at finde antal timer får
jeg en hel del komma tal. Altså efter komma kommer der en hel del tal. Jeg
vil begrænse det med 2 decimaler. Jeg gør altså følgende:

$online_time = $online_time / 3600;
$online_time = "$online_time timer";

print $online_time;

hvordan kan jeg begrænse resultatet til evt. 1 eller 2 decimaler? Eller
måske hvordan kan jeg lave resultatet om til integer? Eller hvis jeg ikke er
til besvær hvordan kan jeg vise resultatet som f.eks. 2 timer 3 minutter og
4 sekunder?



 
 
Peter Makholm (29-07-2003)
Kommentar
Fra : Peter Makholm


Dato : 29-07-03 13:10

"Flemming Hansen" <dsl34257@vip.cybercity.dk> writes:

> $online_time = $online_time / 3600;
> $online_time = "$online_time timer";
>
> print $online_time;
>
> hvordan kan jeg begrænse resultatet til evt. 1 eller 2 decimaler? Eller

Du kan bruge printf eller sprintf.

printf "%0.2f timer", $online_timer;

> måske hvordan kan jeg lave resultatet om til integer? Eller hvis jeg ikke er
> til besvær hvordan kan jeg vise resultatet som f.eks. 2 timer 3 minutter og
> 4 sekunder?

Følgende ser ikke helt forkert ud og kan tilrettes til dine ønsker:

#!/usr/bin/perl

sub sec2tid {
$sec = $_[0];
$min = $sec / 60; $sec %= 60;
$timer = $min / 60; $min %= 60;
$dage = $timer / 24; $timer %= 24;
return ($dage,$timer,$min,$sec);
}

printf "%d dage, %d timer, %d minutter og %d sekunder\n", sec2tid($_) for (10, 100, 1000, 1000000, 1000000000);
___END___

(Jeg mente at et megasekund var tættere på 14 dage)

--
Peter Makholm | I laugh in the face of danger. Then I hide until
peter@makholm.net | it goes away
http://hacking.dk | -- Xander

Lars Balker Rasmusse~ (29-07-2003)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 29-07-03 13:16

"Flemming Hansen" <dsl34257@vip.cybercity.dk> writes:
> Jeg har lavet et simpel script hvor jeg indlæser online brugere og deres
> online tid. Jeg har det problem at når jeg dividerer online tid med 60 for
> at finde antal minutter og dividerer med 3600 for at finde antal timer får
> jeg en hel del komma tal. Altså efter komma kommer der en hel del tal. Jeg
> vil begrænse det med 2 decimaler. Jeg gør altså følgende:
>
> $online_time = $online_time / 3600;
> $online_time = "$online_time timer";
>
> print $online_time;
>
> hvordan kan jeg begrænse resultatet til evt. 1 eller 2 decimaler?

printf "%.2f", $online_time;

> Eller måske hvordan kan jeg lave resultatet om til integer?

$online_time = int $online_time;

> Eller hvis jeg ikke er til besvær hvordan kan jeg vise resultatet
> som f.eks. 2 timer 3 minutter og 4 sekunder?

$secs = $online_time;
$mins = int $secs / 60;
$secs -= $mins * 60;
$hours = int $mins / 60;
$mins -= $hours * 60;

--
Lars Balker Rasmussen Consult::Perl

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste