Skip to content

fix: keep precision trailing zeros for negative values - #331

Open
naveentehrpariya wants to merge 1 commit into
avoidwork:masterfrom
naveentehrpariya:fix-precision-negative-trailing-zeros
Open

fix: keep precision trailing zeros for negative values#331
naveentehrpariya wants to merge 1 commit into
avoidwork:masterfrom
naveentehrpariya:fix-precision-negative-trailing-zeros

Conversation

@naveentehrpariya

Copy link
Copy Markdown
Contributor

The precision option leaves the value as a string from toPrecision (e.g. "1.50"), but decorateResult negated it arithmetically — coercing it back to a number and dropping the trailing zeros the option asked for:

filesize(1500,  {precision: 3}) // '1.50 kB'
filesize(-1500, {precision: 3}) // '-1.5 kB'   <- precision lost
filesize(-1000, {precision: 3}) // '-1 kB'     <- expected '-1.00 kB'

So a negative value silently renders with fewer significant digits than its positive counterpart, and the same loss shows up in array/object output.

This prefixes the sign for the string case instead of negating it, so negatives keep the same digits as positives. Existing behavior is unchanged everywhere else — the number path still negates as before, and the existing filesize(-1234567890, {precision: 2}) === '-1.2 GB' assertion still passes.

Adds a regression test covering string, array and object output. Full suite green (200 passing).

The precision option leaves the value as a string from toPrecision
(e.g. "1.50"), but decorateResult negated it arithmetically, coercing
it back to a number and dropping the requested trailing zeros:

  filesize(1500,  {precision: 3}) // '1.50 kB'
  filesize(-1500, {precision: 3}) // '-1.5 kB'  <- precision lost

Prefix the sign for the string case instead, so a negative value keeps
the same significant digits as its positive counterpart.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant