Skip to content

General: keep five significant digits from an exponent of ±99 on - #108

Merged
borgar merged 2 commits into
borgar:masterfrom
arancool3000:fix/105-general-exp-digits
Nov 2, 2026
Merged

borgar merged 2 commits into
borgar:masterfrom
arancool3000:fix/105-general-exp-digits

Conversation

@arancool3000

Copy link
Copy Markdown
Contributor

What: For a three-digit exponent, Excel's General format writes five significant digits in the mantissa, not six. For example, 1.23456789E+99 gives 1.2346E+99 in Excel and 1.23457E+99 in numfmt. This is point 2 of #105.

Fix (src/general.ts, getExp): the mantissa is rounded to 4 decimals when |exp| >= 99, and to 5 otherwise. A mantissa that rounds to 10 is carried into the exponent (9.999994E+200 → 1E+201). The carry is the same hunk as #106. If #106 merges first, this PR is left with only the digit change.

Tests: added a case to test/ssf-general.spec.ts with the issue's table: ±98 still gives six digits, and +99, +307, −200, +200 (with carry) and −99 (with carry) give five. It fails before the fix and passes after. The full npm test suite, eslint and tsc are clean.

Not included: point 3, a subnormal number written as 0. The existing test for #64 expects General of 2.33e-321 to give 2.33E-321, so that change needs the maintainer to decide first.

Part of #105 (point 2; point 1 is #106).

AI-assisted (Claude); reviewed before submission.

Aran Keyhan-Rad and others added 2 commits October 30, 2026 14:17
@borgar
borgar merged commit e7995ca into borgar:master Nov 2, 2026
3 checks passed
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.

2 participants