Thread Floor auch für Minuswerte? (13 answers)
Opened by silbersteine at 2004-08-05 02:03

Dubu
 2004-08-05 20:32
#85383 #85383
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=silbersteine,05.08.2004, 00:03]
Code: (dl )
1
2
3
4
5
6
7
sub clock {
    my $minutes = shift;
    my $hh = floor($minutes/60);
    my $rest = $minutes - $hh*60;
    if (length($rest) == 1) {$rest = "0".$rest}
    return "$hh:$rest";
}
[/quote]
Beide Methoden liefern ein falshces Ergebnis, wenn die Zeit negativ und unterhalb einer Stunde liegt (-60 < Argument < 0), weil es numerisch kein "-0" gibt.

Ich halte es fuer besser, das Vorzeichen separat zu halten:
Code: (dl )
1
2
3
4
5
6
7
sub clock {
   my $minutes = shift;
   my $sign = ($minutes >= 0);
   my $hh = int($minutes/60);
   my $rest = abs($minutes - $hh*60);
   return sprintf ("%s%d:%02d", ($sign ? '' : '-'), $hh, $rest);
}

View full thread Floor auch für Minuswerte?