浮動小数点リテラル
提供: cppreference.com
浮動小数点リテラルは値がソースファイル内で指定されるコンパイル時定数を定義します。
構文
| digit-sequence exponent suffix(オプション) | (1) | |
digit-sequence . exponent(オプション) suffix(オプション)
|
(2) | |
digit-sequence(オプション) . digit-sequence exponent(オプション) suffix(オプション)
|
(3) | |
0x | 0X hex-digit-sequence exponent suffix(オプション)
|
(4) | (C++17以上) |
0x | 0X hex-digit-sequence . exponent suffix(オプション)
|
(5) | (C++17以上) |
0x | 0X hex-digit-sequence(オプション) . hex-digit-sequence exponent suffix(オプション)
|
(6) | (C++17以上) |
1) 小数点なしの整数を表す digit-sequence。 この場合、指数は必須です。
1e10、 1e-5L など。2) 小数点付きの整数を表す digit-sequence。 この場合、指数は任意です。
1.、 1.e-2 など。3) 小数を表す digit-sequence。 指数は任意です。
3.14、 .1f、 0.1e-1L など。4) 小数点なしの整数を表す16進の digit-sequence。 16進浮動小数点リテラルの場合、指数は必須です。
0x1ffp10、 0X0p-1 など。5) 小数点付きの整数を表す16進の digit-sequence。 16進浮動小数点リテラルの場合、指数は必須です。
0x1.p0、 0xf.p-1 など。6) 小数点付きの小数を表す16進の digit-sequence。 16進浮動小数点リテラルの場合、指数は必須です。
0x0.123p-1、 0xa.bp10l など。exponent は以下の形式を持ちます。
e | E exponent-sign(オプション) digit-sequence
|
(1) | |
p | P exponent-sign(オプション) digit-sequence
|
(2) | (C++17以上) |
1) 10進浮動小数点リテラル用の指数構文。
2) 16進浮動小数点リテラル用の指数構文。
exponent-sign は + または - のいずれかです (存在する場合)。
suffix は f、 F、 l または L のいずれかです (存在する場合)。 接尾辞は浮動小数点リテラルの型を決定します。
- 接尾辞なし ー
double fまたはFーfloatlまたはLーlong double
- 接尾辞なし ー
| 区切り文字として数字の間に任意にシングルクォート (') を挿入できます。 これらはコンパイル時に無視されます。 | (C++14以上) |
説明
浮動小数点リテラルの値が10の exponent 乗によって乗算される仮数部であることを意味する、10進科学表記が使用されます。 123e4 の数学的な意味は 123×104 です。
|
浮動小数点リテラルが文字シーケンス 16進浮動小数点リテラルの場合、仮数部は16進数の有理数として解釈され、指数の digit-sequence は仮数部をスケールしなければならない2の整数乗として解釈されます。 double d = 0x1.2p3; // 2^3によってスケールされる16進数の仮数部1.2 (10進数の1.125)、すなわち9.0
|
(C++17以上) |
例
Run this code
#include <iostream>
int main()
{
std::cout << 58. << '\n'
<< 4e2 << '\n'
<< 123.456e-67 << '\n'
<< .1E4f << '\n'
<< 0x10.1p0 << '\n';
}
出力:
58
400
1.23456e-65
1000
16.0625
ノート
16進浮動小数点リテラルは C++17 までは C++ の一部ではありませんでしたが、入出力関数では C++11 以降パースしたり表示したりできました。 C++ の入出力ストリーム (std::hexfloat が有効なとき) と C の入出力ストリーム (std::printf、 std::scanf など) の両方でです。 書式の説明は std::strtof を参照してください。
関連項目
| ユーザ定義リテラル(C++11) | ユーザ定義の接尾辞を持つリテラル |
浮動小数点定数 の C言語リファレンス
|