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

datentyp unsigned für perl? (Seite 2)

Leser: 1


<< |< 1 2 >| >> 14 Einträge, 2 Seiten
sid burn
 2007-05-23 18:04
#76801 #76801
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=PerlProfi,23.May.2007, 15:33][quote=sid burn,23.05.2007, 10:47]Allerdiengs wüsste ich jetzt auch nicht wofür ein expliziter Unsigned Wert Sinvoll wäre.[/quote]
Ich sehe den Sinn nur in größeren Zahlen.
Und wenn du solche brauchst, kannst du ja bigint / bigfloat benutzen, wie Ronnie schon gesagt hat.[/quote]
Ganz genau,
aber bei Perl sind die Zahlen doch sowieso schon größer als wie bei C, wo bei 32bit ~ 4.4 Millarden Schluß ist. Mit Vorzeichen dann von -2.2 Mia bis +2.2 Mia. Ich kann ja ohne Probleme mit höheren Zahlen rechnen.

Code: (dl )
1
2
sidburn@sid:~/logs/orig/test$ perl -e '$a=12_111_222_333; $b=800_111_222_333; print $a + $b, "\n"'
812222444666


Von daher sehe ich da noch weniger den Sinn von unsigned.

Wie weit kann Perl eigentlich Intern Zahlen darstellen? Also ab wann benötigt man Bigint?

Ich meine mal in test herausgefunden zu haben das bei 10 ** 308 oder so Schluß ist.\n\n

<!--EDIT|sid burn|1179929131-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
tolgale
 2007-05-23 18:45
#76802 #76802
User since
2007-04-24
22 Artikel
BenutzerIn
[default_avatar]
CPAN:integer

Code: (dl )
$a = 2**31 - 1;  # Largest positive integer on 32-bit machines


demnach wenn es darüber geht [ 2147483647 ].
$nobody==$perfect?$everybody==nobody$:$everybody==$perfect; # <(^^,)>
sid burn
 2007-05-23 19:39
#76803 #76803
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
[quote=tolgale,23.May.2007, 16:45]CPAN:integer

Code: (dl )
$a = 2**31 - 1;  # Largest positive integer on 32-bit machines


demnach wenn es darüber geht [ 2147483647 ].[/quote]
Hmm,
also ca. 800 Millarden finde ich deutlich höher als 2147483647. Und das Stück Code oben geht ohne Probleme auf meiner 32bit Maschiene (Athlon XP) zuhause. Aber auch auf meiner Arbeitsmaschiene. Ist zwar ein Athlon 64 benutze aber kein 64bit Kernel.

Code: (dl )
1
2
3
4
sidburn@sid:~$ uname -a
Linux sid 2.6.18-4-686 #1 SMP Wed Apr 18 09:55:10 UTC 2007 i686 GNU/Linux
sidburn@sid:~$ perl -e '$a=2147483647; $b=2147483647; $c=2147483647; print $a + $b + $c, "\n"'
6442450941


Ansonsten macht "integer" aber etwas anderes. Das kürzt alle Fließzahlen die du in deinem Programm hast auf Integer Zahlen ab. Und sobald ich mit Zahlen über 2 Mill. Rechne wird mit den Zahlen umgeganen wie in C. Das ist aber ein Feature das selbst C nicht hat. Und nicht mit unsigned Zahlen vergleichbar ist.

Aber warum sollte man das wollen? Wenn du Integer Zahlen möchtest kannst du auch einfach ein "int($zahl)" Schreiben. Geht dann auch mit Zahlen größer 2 Mill.
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
steffenw
 2007-05-25 23:32
#76804 #76804
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
In perl sind übrigens solche typen eingebaut und man kann mit C oder Java oder sonstwas binäre Datenstrukturen austauschen. Das ist alles kein Problem, weil in jedem Perl die Standardfunktionen pack und unpack eingebaut sind.

Die andere Diskussion, ob etwas fest eingebaut ist oder als Bibliothek (CPAN) dazuladbar ist igendwie voll daneben. Alles was fest eingebaut ist, ist Balast, wenn man es nicht braucht. Somit ist die Perl-Distriibution soweit ausgewogen, daß bestimmte Dinge wie GUI natürlich nicht drin ist, weil sie bei perl-CGI natürlich völlig daneben wäre. Und so läßt sich die Liste fortsetzen. Daß man einfach sein Perl erweitern kann, das ist nämlich ein Vorteil und auf keinen Fall ein Nachteil. Perl wird für GUI, CGI oder auch shell-Programmierung eingesetzt, sowohl objektorientiert aber natürlich auch völlig ohne.
$SIG{USER} = sub {love 'Perl' or die};
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2007-05-20 23:59.