fraction 2.0.0-nullsafety.0
fraction: ^2.0.0-nullsafety.0 copied to clipboard
A package that helps you dealing with mathematical fractions. Work with fractions, mixed fractions and types conversions.
A package that helps you dealing with fractions and mixed fractions.
Working with fractions #
You can create an instance of Fraction
using one of its constructors.
-
Basic: it just requires the numerator and/or the denominator.
final frac = Fraction(3, 5); // 3/5 final frac = Fraction(3, 1); // 3
-
String: pass the fraction as a string but it has to be well-formed otherwise an exception is thrown.
final frac1 = Fraction.fromString("2/4"); // 2/4 final frac2 = Fraction.fromString("-2/4"); // -2/4 final frac3 = Fraction.fromString("2/-4"); // Error final frac4 = Fraction.fromString("-2"); // -2/1
-
double: represents a double as a fraction. Note that irrational numbers cannot be converted into a fraction by definition; the constructor has the
precision
parameter which decides how precise the representation has to be.final frac1 = Fraction.fromDouble(1.5); // 3/2 final frac2 = Fraction.fromDouble(-8.5); // -17/2 final frac3 = Fraction.fromDouble(math.pi); // 208341/66317 final frac4 = Fraction.fromDouble(math.pi, 1.0E-4); // 333/106
The constant
pi
cannot be represented as a fraction because it's an irrational number. The constructor considers onlyprecison
decimal digits to create a fraction. With rational numbers instead you don't have problems.
Thanks to extension methods you can also create a Fraction
object "on the fly" by calling the toFraction()
method on a number or a string.
final f1 = 5.toFraction(); // 5/1
final f2 = 1.5.toFraction(); // 3/2
final f3 = "6/5".toFraction(); // 6/5
Note that a Fraction
object is immutable so methods that require changing the internal state of the object return a new instance. For example, reduce()
method reduces the fraction to the lowest terms but it returns a new instance:
final fraction = Fraction.fromString("12/20"); // 12/20
final reduced = fraction.reduce(); // now it's simplified to 3/5
Two fractions are equal if their "cross product" is equal. For example 1/2
and 3/6
are said to be equivalent because 1*6 = 3*2
(and in fact 3/6
is the same as 1/2
). Be sure to check out the official documentation at pub.dev for a complete overview of the API.
Working with mixed fractions #
A mixed fraction is made up of a whole part and a proper fraction (a fraction in which numerator <= denominator). Building MixedFraction
objects can't be easier:
final mixed1 = MixedFraction(
whole: 3,
numerator: 4,
denominator: 7
);
final mixed2 = MixedFraction.fromDouble(1.5);
final mixed3 = MixedFraction.fromString("1 1/2");
There is also the possibility to initialize a MixedFraction
using extension methods, as it happens with Fraction
:
final mixed = "1 1/2".toMixedFraction();
Note that MixedFraction
objects are immutable exactly like Fraction
objects so you're guaranteed that the internal state of the instance won't change during its lifetime.