Thread Byte zählen - zu große Zahlen?
(9 answers)
Opened by bianca at 2011-05-12 14:03
Also 2 hoch 32 sollte schon mal völlig unproblematisch sein. Da hört dann der normale Int auf und perl fängt an mit doubles weiter zu rechnen (Fließkommazahlen doppelter Genauigkeit). Wie groß die Mantisse (also der Ganzzahlanteil) einer Fließkommazahl ist, hängt leider von der benutzten Plattform bzw. dem C-Compiler ab.
edit: ich hab mal ein bisschen rumgetestet und auf meinem Webserver scheint perl bis 2** 53 ganz gut zu zählen: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 use warnings; use strict; use Math::BigInt; my $mbi = Math::BigInt->new( 2 ) ** Math::BigInt->new( 53 ); my $n = 2 ** 53; for my $o ( -10 .. 10 ) { printf "%.0f - ", $n + $o; print $mbi + $o; print "\n"; } erzeugt folgende Ausgabe: Code: (dl
)
1 9007199254740982 - 9007199254740982 Wenn du ganz sicher gehen willst, solltest du aber wohl einfach direkt Math::BigInt benutzen. Last edited: 2011-05-12 16:07:44 +0200 (CEST) $_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0 F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B |