withScale method

BigDecimal withScale(
  1. int newScale, {
  2. RoundingMode roundingMode = RoundingMode.UNNECESSARY,
})

Implementation

BigDecimal withScale(
  int newScale, {
  RoundingMode roundingMode = RoundingMode.UNNECESSARY,
}) {
  if (scale == newScale) {
    return this;
  } else if (intVal.sign == 0) {
    return BigDecimal._(intVal: BigInt.zero, scale: newScale);
  } else {
    if (newScale > scale) {
      final drop = sumScale(newScale, -scale);
      final intResult = intVal * BigInt.from(10).pow(drop);
      return BigDecimal._(intVal: intResult, scale: newScale);
    } else {
      final drop = sumScale(scale, -newScale);
      return _divideAndRound(intVal, BigInt.from(10).pow(drop), newScale,
          roundingMode, newScale);
    }
  }
}