浮点字面量
#纯右值
浮点字面量(floating-point literal)是在代码中直接写出的浮点常量,其值在编译时由源代码指定。
它用于表示小数和科学计数法形式的常量。
语法结构
十进制格式
cpp
数字序列 [可选指数] [可选后缀] // 1e10, 1e-5L
数字序列. [可选指数] [可选后缀] // 1., 1.e-2
.数字序列 [可选指数] [可选后缀] // 3.14, .1f, 0.1e-1L- 指数部分由
e或E开头,后跟可选+/-和数字序列 123e4→ $123 \times 10^4$
十六进制格式
#cpp17
cpp
0x/0X十六进制数字序列 十六进制指数 [可选后缀] // 0x1fffp10, 0x0p-1
0x/0X十六进制数字序列. 十六进制指数 [可选后缀] // 0x1.p0, 0xf.p-1
0x/0X[可选十六进制数字序列].十六进制数字序列 十六进制指数 [可选后缀] // 0x0.123p-10x1.4p3→ 十六进制1.4 = 十进制1.25, $1.25 \times 2 ^ 3 = 10.0$
后缀与类型
浮点字面量可以通过后缀指定其类型:
| 后缀 | 类型 |
|---|---|
| 无 | double |
f / F | float |
l / L | long double |
f16 / F16 | std::float16_t |
f32 / F32 | std::float32_t |
f64 / F64 | std::float64_t |
f128 / F128 | std::float128_t |
bf16 / BF16 | std::bfloat16_t |
#cpp23 f16, f32, f64, f128, bf16, F16, F32, F64, F128, BF16 C++23 开始支持固定宽度浮点类型。
数字分隔符
#cpp14
可以在数字字面量中插入单引号 ' 作为可视分隔符:
cpp
3.14'15'92编译器在计算值时忽略这些分隔符。