NAME
Number::Fraction - Perl extension to model fractions
SYNOPSIS
use Number::Fraction;
my $f1 = Number::Fraction->new(1, 2);
my $f2 = Number::Fraction->new('1/2');
my $f3 = Number::Fraction->new($f1); # clone
my $f4 = Number::Fraction->new; # 0/1
or
use Number::Fraction ':constants'
my $f1 = '1/2';
my $one = $f1 + $f2;
my $half = $one - $f1;
print $half; # prints '1/2'
ABSTRACT
Number::Fraction is a Perl module which allows you to work with fractions in your Perl programs.
DESCRIPTION
Number::Fraction allows you to work with fractions (i.e. rational numbers) in your Perl programs in a very natural way.
It was originally written as a demonstration of the techniques of overloading.
If you use the module in your program in the usual way
use Number::Fraction;
you can then create fraction objects using Number::Fraction-
new> in a number of ways.
my $f1 = Number::Fraction->new(1, 2);
creates a fraction with a numerator of 1 and a denominator of 2.
my $f2 = Number::Fraction->new('1/2');
does the same thing but from a string constant.
my $f3 = Number::Fraction->new($f1);
makes $f3
a copy of $f1
my $f4 = Number::Fraction->new; # 0/1
creates a fraction with a denominator of 0 and a numerator of 1.
If you use the alterative syntax of
use Number::Fraction ':constants';
then Number::Fraction will automatically create fraction objects from string constants in your program. Any time your program contains a string constant of the form \d+/\d+
then that will be automatically replaced with the equivalent fraction object. For example
my $f1 = '1/2';
Having created fraction objects you can manipulate them using most of the normal mathematical operations.
my $one = $f1 + $f2;
my $half = $one - $f1;
Additionally, whenever a fraction object is evaluated in a string context, it will return a string in the format x/y. When a fraction object is evaluated in a numerical context, it will return a floating point representation of its value.
Fraction objects will always "normalise" themselves. That is, if you create a fraction of '2/4', it will silently be converted to '1/2'.
EXPORT
None by default.
SEE ALSO
perldoc overload
AUTHOR
Dave Cross, <dave@dave.org.uk>
COPYRIGHT AND LICENSE
Copyright 2002 by Dave Cross
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.