Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2
bigint.pl
#!/usr/local/bin/perl
# bigint.pl -- Zeigt die Verwendung des Math::BigInt Moduls.
use Math::BigInt; # Standardmodul
# Erzeugen einiger Math::BigInt-Objekte mit dem 'new'-Konstruktor:
# Ergaenzung: Bei neueren Math::BigInt Versionen (> Perl 5.6.0)
# sind keine Blanks mehr erlaubt.
# Eventuell waeren '_' erlaubt (unbestaetigt).
# my $n1 = Math::BigInt->new('1234567890 1234567890 1234567890');
# my $n2 = Math::BigInt->new('9876543210 9876543210 9876543210');
my $n1 = Math::BigInt->new('123456789012345678901234567890');
my $n2 = Math::BigInt->new('987654321098765432109876543210');
# Die normalen arithmetischen Operatoren wurden ueberladen
# und unterstuetzen nun auch Math::BigInt-Objekte:
$nsum = $n1 + $n2;
$ndiff = $n1 - $n2;
$nprod = $n1 * $n2;
($nquot, $nrest) = ($n2 / $n1, $n2 % $n1); # Zwei Operationen...
($nquot, $nrest) = $n2->bdiv($n1); # Effizienter!
# Die Darstellung eines Math::BigInt-Objekts erfolgt immer im
# kanonischen Format:
print '$n1 == ', $n1, "\n";
print '$n2 == ', $n2, "\n\n";
print '$n1 + $n2 == ', $nsum , "\n";
print '$n1 - $n2 == ', $ndiff, "\n";
print '$n1 * $n2 == ', $nprod, "\n";
print '$n2 / $n1 == ', $nquot, "\n";
print '$n2 % $n1 == ', $nrest, "\n";
# Es gibt auch Nicht-Zahlen: NaN (Not-a-Number)
print '$n1 / 0 == ', $n1 / Math::BigInt->new('0'), "\n";
# Schliesslich koennen Math::BigInt und normale Zahlen
# vermischt werden. Es kommt immer eine Math::BigInt-Zahl heraus:
print '$n1 + 999 == ', $n1 + 999, "\n";
print '111 * 222 == ', 111 * Math::BigInt->new('222'), "\n";
# Inkrement- und Dekrement-Operatoren funktionieren auch:
# Keine Blanks mehr bei neueren Math::BigInt (> Perl 5.6.0)
# $n1 = Math::BigInt->new('99999 99999');
$n1 = Math::BigInt->new('9999999999');
print "\n", '$n1 == ', $n1, "\n";
print '$n1++ == ', $n1++, "\n";
print '$n1 == ', $n1, "\n";
print '--$n1 == ', --$n1, "\n";
[Prev] [Up] [Relevant Chapter] [Next]
[Alte Quelle]
| Last modified: $Date: 2006/05/18 12:55:51 $ FH. Search :: Sitemap :: Disclaimer :: Copyright :: Privacy |
|