Skip to content

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

@Fifixex

Description

@Fifixex

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions