diff --git a/.changeset/upset-clubs-kick.md b/.changeset/upset-clubs-kick.md new file mode 100644 index 00000000000..6aeb456979d --- /dev/null +++ b/.changeset/upset-clubs-kick.md @@ -0,0 +1,5 @@ +--- +"effect": patch +--- + +Return `self` from `BigDecimal.normalize` for already-normalized values diff --git a/packages/effect/src/BigDecimal.ts b/packages/effect/src/BigDecimal.ts index 1a52ce9992a..b8cef106393 100644 --- a/packages/effect/src/BigDecimal.ts +++ b/packages/effect/src/BigDecimal.ts @@ -161,11 +161,11 @@ export const normalize = (self: BigDecimal): BigDecimal => { if (trail === 0) { self.normalized = self + } else { + const value = BigInt(digits.substring(0, digits.length - trail)) + const scale = self.scale - trail + self.normalized = unsafeMakeNormalized(value, scale) } - - const value = BigInt(digits.substring(0, digits.length - trail)) - const scale = self.scale - trail - self.normalized = unsafeMakeNormalized(value, scale) } }