Percent constructor
Percent(
- double amount, [
- int precision = 100
])
Implementation
factory Percent(double amount, [int precision = 100]) {
precision = precision > 1000 ? 1000 : precision;
precision = precision < 100 ? 100 : precision;
List<String> decimals = [];
switch (precision) {
case 10:
decimals = amount.toStringAsFixed(1).split('.');
break;
case 100:
decimals = amount.toStringAsFixed(2).split('.');
break;
case 1000:
decimals = amount.toStringAsFixed(3).split('.');
break;
case 10000:
decimals = amount.toStringAsFixed(4).split('.');
break;
default:
decimals = amount.toStringAsFixed(5).split('.');
break;
}
if (decimals.isEmpty) decimals.addAll(['0', '00000']);
final whole = int.tryParse(decimals.first) ?? 0;
final fractions = int.tryParse(decimals.last) ?? 0;
var fmu = whole * precision;
fmu = amount.isNegative ? fmu + (-fractions) : fmu + fractions;
return Percent._(fmu: fmu, precision: precision);
}