浮点字面量是浮点常量的十进制或十六进制表示形式。
十进制浮点字面量由一个整数部分(十进制数字)、一个小数点、一个小数部分(十进制数字)和一个指数部分(e 或 E 后面跟着一个可选的 sign 标记和十进制数字)组成。可以省略掉整数部分或小数部分,也可以省略掉小数点或指数部分。指数值 exp 将尾数(整数和小数部分)缩放为 10exp。
十六进制浮点字面量由一个 0x 或 0X 前缀、一个整数部分(十六进制数字)、一个小数点、一个小数部分(十六进制数字)和一个指数部分(p 或 P 后跟一个可选的 sign 标记和十进制数字)组成。可以省略掉整数部分或小数部分,也可以省略掉小数点,但指数部分是必需的(此语法与 IEEE 754-2008 §5.12.3 中给出的语法相匹配)。指数值 exp 将尾数(整数和小数部分)缩放为 2exp。
为了可读性,下划线 _ 可以出现在基本前缀之后或连续数字之间,这样的下划线不会改变字面量的值。
浮点字面量 = 十进制浮点字面量 | 十六进制浮点字面量 .十进制浮点字面量 = 十进制数字 "." [ 十进制数字 ] [ 十进制指数 ] |十进制数字 十进制指数 |"." 十进制数字 [ 十进制指数 ] .十进制指数 = ( "e" | "E" ) [ "+" | "-" ] 十进制数字 .十六进制浮点字面量 = "0" ( "x" | "X" ) 十六进制尾数 十六进制指数 .十六进制尾数 = [ "_" ] 十六进制数字 "." [ 十六进制数字 ] |[ "_" ] 十六进制数字 |"." 十六进制数字 .十六进制指数 = ( "p" | "P" ) [ "+" | "-" ] 十进制数字 .
0.72.40072.40 // == 72.402.718281.e+06.67428e-111E6.25.12345E+51_5. // == 15.00.15e+0_2 // == 15.00x1p-2 // == 0.250x2.p10 // == 2048.00x1.Fp+0 // == 1.93750X.8p-0 // == 0.50X_1FFFP-16 // == 0.12498474121093750x15e-2 // == 0x15e - 2 (integer subtraction)0x.p1 // 无效:尾数(整数和小数部分)没有数字1p-2 // 无效:p 指数需要十六进制尾数0x1.5e-2 // 无效:十六进制尾数需要 p 指数1_.5 // 无效:_ 必须将连续的数字分开1._5 // 无效:_ 必须将连续的数字分开1.5_e1 // 无效:_ 必须将连续的数字分开1.5e_1 // 无效:_ 必须将连续的数字分开1.5e1_ // 无效:_ 必须将连续的数字分开
