nodejs / nodejs/node

util.inspect: incorrect numericSeparator formatting for numbers in scientific notation (e.g. 1e-7)

Open
#62,981 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

never-stale
Dominant language
JavaScript
Stars
122k
Forks
37.3k
Avg merge
4d 2h
Merged PRs (30d)
283

Description

Version

v24.14.0

Platform
Linux DESKTOP-59R7A1D 6.6.87.2-microsoft-standard-WSL2 #1 SMP PREEMPT_DYNAMIC Thu Jun  5 18:30:46 UTC 2025 x86_64 GNU/Linux
Subsystem

util.inspect

What steps will reproduce the bug?
const util = require('util');

console.log(util.inspect(1e-7, { numericSeparator: true }));
How often does it reproduce? Is there a required condition?

Always reproducible when:

  • numericSeparator is set to true
  • The number is formatted using scientific notation (e.g. 1e-7, 1e+21)
What is the expected behavior? Why is that the expected behavior?

The output should remain a valid numeric string representation.

For example:

'1e-7'

Scientific notation should either:

  • remain unchanged, or
  • be properly expanded before applying numeric separators

But it should never produce malformed output.

What do you see instead?

Malformed and corrupted output:

'1e-.1e-_7'

This happens because the formatting logic assumes that any non-integer number contains a decimal point (.), and attempts to split the string accordingly. However, scientific notation strings like '1e-7' do not contain a decimal point, leading to incorrect string slicing and separator insertion.

Additional information

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the util.inspect entry point and reproduce the provided numericSeparator example using Node.js. Trace the formatting path for scientific notation and verify that the result remains a valid numeric string; add regression coverage for both 1e-7 and 1e+21 if the surrounding tests provide a suitable location.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, node.js
Domain
devtools
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
66/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.