fraction 1.1.0
fraction #
A package that helps you dealing with mathematical fractions.
Fraction
which represents fractions in the forma/b
;MixedFraction
which represents mixed fractions in the forma b/c
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, 5); // 3/1

String: pass the fraction as a string but it has to be wellformed 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.fromString(8.5); // 17/2 final frac3 = Fraction.fromString(math.pi); // 208341/66317 final frac4 = Fraction.fromString(math.pi, 1.0E4); // 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
The class has a rich API that overloads a lot of operators, for arithmetics and comparisons. The method
reduces
reduces the fraction to the lowest terms.
final fraction = Fraction.fromString("12/20"); // 12/20
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
). You can get the numerator and
the denominator either with getters...
final fraction = Fraction(3, 10);
final num = fraction.numerator; // 3
final den = fraction.denominator; // 10
... or with the []
operator:
final fraction = Fraction(3, 10);
final num = fraction[0]; // 3
final den = fraction[1]; // 10
Working with mixed fractions #
A mixed fraction is made up of a whole part and a proper fraction (a fraction in which numerator <= denominator). It's easy to build a MixedFraction
object:
final f1 = MixedFraction(3, 4, 7);
final f2 = MixedFraction.fromDouble(1.5);
final f3 = MixedFraction.fromString("1 1/2");
There is also the possibility to initialize a MixedFraction
using extension methods:
final f1 = "1 1/2".toMixedFraction();
If you try to create an instance in which the numerator is greater than the denominator, a MixedFractionException
is thrown.
[1.1.0] #
 Added support for
operator [](int index)
[1.0.1] #
 Fixed some health suggestions.
 Added a few examples in the repository.
[1.0.0] #
Fraction
andMixedFraction
have been released. added support to extension methods to create helpers for
num
andstring
.
Examples #
fraction
 examples on how to use theFraction
class.mixed
 examples on how to use theMixedFraction
class.
Use this package as a library
1. Depend on it
Add this to your package's pubspec.yaml file:
dependencies:
fraction: ^1.1.0
2. Install it
You can install packages from the command line:
with Flutter:
$ flutter pub get
Alternatively, your editor might support flutter pub get
.
Check the docs for your editor to learn more.
3. Import it
Now in your Dart code, you can use:
import 'package:fraction/fraction.dart';
Popularity:
Describes how popular the package is relative to other packages.
[more]

42

Health:
Code health derived from static analysis.
[more]

100

Maintenance:
Reflects how tidy and uptodate the package is.
[more]

100

Overall:
Weighted score of the above.
[more]

71

We analyzed this package on Jul 9, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:
 Dart: 2.8.4
 pana: 0.13.14
 Flutter: 1.17.5
Analysis suggestions
Package not compatible with SDK dart
Because:
fraction
that is a package requiring null.
Dependencies
Package  Constraint  Resolved  Available 

Direct dependencies  
Dart SDK  >=2.7.0 <3.0.0  
flutter  0.0.0  
Transitive dependencies  
collection  1.14.12  1.14.13  
meta  1.1.8  1.2.2  
sky_engine  0.0.99  
typed_data  1.1.6  1.2.0  
vector_math  2.0.8  2.1.0nullsafety  
Dev dependencies  
flutter_test 