Decimal.fromParts constructor

Decimal.fromParts(
  1. Object whole,
  2. Object decimal, {
  3. int? precision,
})

Implementation

factory Decimal.fromParts(Object whole, Object decimal, {int? precision}) {
  if (decimal is num) {
    if (decimal < 0) {
      decimal = decimal.abs();
    }

    String d;
    if (decimal is int) {
      d = decimal.toString();
    } else {
      if (decimal > 1) {
        throw ArgumentError('Decimal > 1: $decimal');
      }

      d = decimal.toString();
      if (d.contains('e')) {
        d = decimal.toStringAsFixed(20);
      }

      if (d.startsWith('0.')) {
        d = d.substring(2);
      } else {
        throw ArgumentError('Invalid decimal: $decimal');
      }
    }

    return Decimal.parseParts(whole.toString(), d, precision: precision);
  } else {
    return Decimal.parseParts(whole.toString(), decimal.toString(),
        precision: precision);
  }
}