Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]5720[/thread]

Aufrunden - wie geht das?

Leser: 1


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
silbersteine
 2003-09-14 17:07
#51880 #51880
User since
2003-08-18
27 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallihallo,

ich versuche gerade eine Berechnung zu runden:

Code: (dl )
my $maxrows = int(($files{'sumofmedias'}+$files{'sumofdirs'})/$config{'thumbs-cols'});


Also das Ergebnis soll die Anzahl der Reihen für eine Tabelle mit mehreren Spalten (cols) liefern. Aber leider wird durch int() ja abgerundet. Sprich: Die letzte Zeile wird nur angezeigt, wenn auch alle Zellen voll sind. Wie kann ich denn aufrunden? Also so, dass eine neue Zeile berücksichtigt wird, sobald eine Zelle davon belegt ist?
Viele Grüße aus Calberlah

Der SilberStein

<a href="http://www.skriptoase.de/">www.skriptoase.de</a>

# "It's all very perlish" (L.Wall)
eisbeer
 2003-09-14 17:21
#51881 #51881
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
vielleicht:

Code: (dl )
1
2
3
4
5
6
if (($files{'sumofmedias'}+$files{'sumofdirs'}) % $config{'thumbs-cols'}) > 0) {
my $maxrows = int(($files{'sumofmedias'}+$files{'sumofdirs'})/$config{'thumbs-cols'}) + 1;
}
else {
my $maxrows = int(($files{'sumofmedias'}+$files{'sumofdirs'})/$config{'thumbs-cols'});
}
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
DS
 2003-09-14 17:24
#51882 #51882
User since
2003-08-04
247 Artikel
BenutzerIn
[default_avatar]
...oder auch auf einmal:
Code: (dl )
my $maxrows = int(($files{'sumofmedias'}+$files{'sumofdirs'}-1)/$config{'thumbs-cols'})+1;
silbersteine
 2003-09-14 17:31
#51883 #51883
User since
2003-08-18
27 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi,

danke für die Hilfe. Aber ich habe auch gesucht und bin fündig geworden. Dafür gibt es eine eigene Funktion im Posix-Modul: ceil() statt in(), und es wird immer aufgerundet. Funktioniert einwandfrei!
Viele Grüße aus Calberlah

Der SilberStein

<a href="http://www.skriptoase.de/">www.skriptoase.de</a>

# "It's all very perlish" (L.Wall)
havi
 2003-09-14 23:02
#51884 #51884
User since
2003-08-04
2036 Artikel
BenutzerIn
[Homepage]
user image
Passt jetzt vielleicht nicht ganz dazu, aber schon mal
Code: (dl )
use integer;


angesehen...

Gruss
Crian
 2003-09-15 12:30
#51885 #51885
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
abrunden: floor($wert) oder $wert >= 0 ? int($wert) : -int(-$wert+1)
runden: int($wert+0.5)
aufrunden: ceil($wert) oder $wert >= 0 ? int($wert+1) : -int(-$wert)\n\n

<!--EDIT|Crian|1063614905-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
eisbeer
 2003-09-15 16:07
#51886 #51886
User since
2003-08-29
347 Artikel
BenutzerIn
[Homepage] [default_avatar]
Kann's sein das floor und ceil undokumentiert sind ?
oder gehören die zu use integer; ?
Die meisten PC Probleme befinden sich zwischen Bildschirm und Stuhl...
Relais
 2003-09-15 16:41
#51887 #51887
User since
2003-08-06
2246 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=eisbeer,15.09.2003, 14:07]Kann's sein das floor und ceil undokumentiert sind ?
oder gehören die zu use integer; ?[/quote]
sie gehören zu CPAN:POSIX.

use POSIX; # ab hier gibt es floor() und ceil() ... wer braucht floor - ?, es gibt doch int()! timtoady...
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop (Termin wird noch gesucht) 2025 in München.

Winter is Coming
Dubu
 2003-09-15 17:22
#51888 #51888
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
[quote=Crian,15.09.2003, 10:30]abrunden: floor($wert) oder $wert >= 0 ? int($wert) : -int(-$wert+1)
runden: int($wert+0.5)
aufrunden: ceil($wert) oder $wert >= 0 ? int($wert+1) : -int(-$wert)[/quote]
Vorsicht: Was ergibt ceil(2) oder ceil(-2)? Was ergeben deine Algorithmen dagegen fuer $wert=2 oder $wert=-2?
Crian
 2003-09-18 19:37
#51889 #51889
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
[quote=Relais,15.09.2003, 14:41][quote=eisbeer,15.09.2003, 14:07]Kann's sein das floor und ceil undokumentiert sind ?
oder gehören die zu use integer; ?[/quote]
sie gehören zu CPAN:POSIX.

use POSIX; # ab hier gibt es floor() und ceil() ... wer braucht floor - ?, es gibt doch int()! timtoady...[/quote]
Der Unterschied liegt darin, dass ceil zur nächst höheren Zahl und floor zur nächst kleineren Zahl wechselt. Das ist bei negativen Zahlen wichtig.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2003-09-14 17:07.