This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++20 status.

### 3250. `std::format`: `#` (alternate form) for NaN and inf

Section: 22.14.2.2 [format.string.std] Status: C++20 Submitter: Richard Smith Opened: 2019-08-05 Last modified: 2021-02-25

Priority: 0

View other active issues in [format.string.std].

View all other issues in [format.string.std].

View all issues with C++20 status.

Discussion:

We have:

> "For floating-point numbers, the alternate form causes the result of the conversion to always contain a decimal-point character, even if no digits follow it."

So does that mean that infinity is formatted as `"inf."` and NaN as `"nan."`? (Or something like that? Where exactly do we add the decimal point in this case?) Or does this affect infinity but not NaN (because we can handwave that a NaN value is not a "floating-point number")?

I suspect that this should only cover finite floating-point numbers.

Victor Zverovich:

Right. So infinity and NaN should be still formatted as `"inf"` and `"nan"` without a decimal point.

[2020-02 Status to Immediate on Thursday morning in Prague.]

Proposed resolution:

This wording is relative to N4830.

1. Modify 22.14.2.2 [format.string.std] as indicated:

   > -6- […] For floating-point types, the alternate form causes the result of the conversion of finite values to always contain a decimal-point character, even if no digits follow it. Normally, a decimal-point character appears in the result of these conversions only if a digit follows it. In addition, for `g` and `G` conversions, trailing zeros are not removed from the result.