https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120548

            Bug ID: 120548
           Summary: std::format confuses a negative sign for a thousands
                    digit when formatting floating point numbers
           Product: gcc
           Version: 15.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: drew.dormann at gmail dot com
  Target Milestone: ---

A minimal reproducible example.


```
#include <format>
#include <iostream>

int main()
{
    std::cout << std::format( std::locale("en_US.UTF-8"), "{:L}", -123.45 );
}
```


I expect this code to display `-123.45`.  I'm asking for thousands separators,
but there is no thousands digit.

Instead, I see:

-,123.45

This differs from the behavior of MSVC, clang's libc++, and fmt::format, which
all produce the result I expected.

Reply via email to