Skip to content

Commit 2d2a3c7

Browse files
committed
to_chars: 精度について補足
1 parent 5b55938 commit 2d2a3c7

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

reference/charconv/to_chars.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,12 @@ C++標準はこれら関数の実装の詳細について何も規定しない
144144
出力文字列が最も短くなるように変換される。
145145
`chars_format::general`が指定された場合は(2)(3)(4)(5)と同等。
146146
147-
- (10)(11)(12)(13) : `fmt`と`precision`によって指定されたフォーマット指定子と精度を用いて、Cロケールで`printf`によって行われたかのように浮動小数点数を文字列へ変換する。
147+
- (10)(11)(12)(13) : `fmt`と`precision`によって指定されたフォーマット指定子と精度を用いて、Cロケールで`printf`によって行われたかのように浮動小数点数を文字列へ変換する。
148+
精度は、`chars_format::fixed`では小数点以下の正確な桁数、`chars_format::scientific`と`chars_format::hex`では最小の桁数を表す。
149+
`chars_format::general`が指定された場合は次のようになる。
150+
- 指数表記したときの指数を`X`、`precision`と1の大きいほうを`P`とする。
151+
- `P > X ≥ −4` のとき、精度 `P - 1 - X` で固定小数形式を使用する。
152+
- それ以外の場合は、精度 `P - 1` で指数形式を使用する。
148153
149154
出力文字列が最も短くなるようにとは、小数点の前に少なくとも1桁あり、対応する[`from_chars`](../charconv/from_chars.md)関数によって値を正確に復元できるような最小の文字数、になることである。
150155
そのような文字列表現が複数ある場合、`value`の値との差が最も小さくなる物が選ばれ、それも複数あるときは[`std::round_to_nearest`](/reference/limits/float_round_style.md)に従った丸めによって一つを選択する。
@@ -409,3 +414,4 @@ z
409414
- C++23での(1)constexpr指定
410415
- [P1467R9 Extended floating-point types and standard names](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p1467r9.html)
411416
- C++23で拡張浮動小数点数型に対応した
417+
- [C言語リファレンス - fprintf](https://ja.cppreference.com/w/c/io/fprintf)

reference/format/format.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,9 @@ string s3 = format("{} {1}", "a", "b"); // コンパイルエラー
153153

154154
大文字のオプションを指定すると数値中のアルファベットが大文字になる。
155155

156-
精度のふるまいについては[`to_chars`](/reference/charconv/to_chars.md)を参照。
156+
「値に応じて」の詳細や、精度の意味については[`to_chars`](/reference/charconv/to_chars.md)を参照。
157+
158+
代替表現を指定すると、小数点以下が何もなくても小数点記号を出力する。`g`/`G`の場合は、代替表現を指定しないかぎり末尾の0およびそれによって不要になる小数点を出力しない。
157159

158160
#### ポインタの場合
159161

0 commit comments

Comments
 (0)