Rational.parse constructor
Rational.parse(
- String decimalValue
Implementation
factory Rational.parse(String decimalValue) {
final match = _pattern.firstMatch(decimalValue);
if (match == null) {
throw FormatException('$decimalValue is not a valid format');
}
final group1 = match.group(1);
final group2 = match.group(2);
final group3 = match.group(3);
var numerator = _i0;
var denominator = _i1;
if (group2 != null) {
for (var i = 1; i < group2.length; i++) {
denominator = denominator * _i10;
}
numerator = BigInt.parse('$group1${group2.substring(1)}');
} else {
numerator = BigInt.parse(group1 ?? '0');
}
if (group3 != null) {
var exponent = BigInt.parse(group3.substring(1));
while (exponent > _i0) {
numerator = numerator * _i10;
exponent -= _i1;
}
while (exponent < _i0) {
denominator = denominator * _i10;
exponent += _i1;
}
}
return Rational(numerator, denominator);
}