Skip to content

浮点字面量 ​

#纯右值

浮点字面量(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-1
  • 0x1.4p3 → 十六进制1.4 = 十进制1.25, $1.25 \times 2 ^ 3 = 10.0$

后缀与类型 ​

浮点字面量可以通过后缀指定其类型:

后缀类型
无double
f / Ffloat
l / Llong double
f16 / F16std::float16_t
f32 / F32std::float32_t
f64 / F64std::float64_t
f128 / F128std::float128_t
bf16 / BF16std::bfloat16_t

#cpp23 f16, f32, f64, f128, bf16, F16, F32, F64, F128, BF16 C++23 开始支持固定宽度浮点类型。

数字分隔符 ​

#cpp14

可以在数字字面量中插入单引号 ' 作为可视分隔符:

cpp
3.14'15'92

编译器在计算值时忽略这些分隔符。