# setScale method

BigDecimal setScale(

1. int newScale

)

Returns a BigDecimal with the specified scale.

`newScale` the desired scale

Note: This is equivalent to BigDecimal.fromDouble(this.toDouble().setScale(newScale)).

    BigDecimal a = BigDecimal.fromInt(42);
    BigDecimal b = a.setScale(2);
    print(b); // "42.00"

## Implementation

    BigDecimal setScale(int newScale) {
      if (newScale == _scale) return this;

      if (newScale > _scale) {
        // Increase scale by adding zeros
        int scaleDiff = newScale - _scale;
        BigInt newUnscaled = _unscaledValue * BigInt.from(10).pow(scaleDiff);
        return BigDecimal._(newUnscaled, newScale);
      } else {
        // Decrease scale by dividing and rounding
        int scaleDiff = _scale - newScale;
        BigInt divisor = BigInt.from(10).pow(scaleDiff);

        // Simple rounding (round half up)
        BigInt quotient = _unscaledValue ~/ divisor;
        BigInt remainder = _unscaledValue.remainder(divisor);
        BigInt halfDivisor = divisor ~/ BigInt.two;

        if (remainder.abs() >= halfDivisor) {
          quotient += _unscaledValue.isNegative ? BigInt.from(-1) : BigInt.one;
        }

        return BigDecimal._(quotient, newScale);
      }
    }