www.farid-hajji.net banner

Farid Hajji

Perl: Einführung, Anwendungen, Referenz (2/e) [Support-Site]

Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2

Beispielprogramm

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
FreeBSD Logo