Skip to content

4.1.2.两类数字

龙腾道 edited this page Sep 30, 2021 · 1 revision

※ TOML 0.3 开始允许 + 号

※ TOML 0.4 开始可以在实值部分内加入下划线,以增强可读性

  1. 整数

    • 十进制(不允许前导零,因为编程界界存在八进制歧义)

      ^
          [+-]?
          (0|[1-9][0-9]*(_[0-9]+)*)
      $
      
    • 十六进制(TOML 0.5 新增;不能为负数 ①)

      ^
          0x
          [0-9A-Fa-f]+(_[0-9A-Fa-f]+)*
      $
      
    • 八进制(TOML 0.5 新增;不能为负数 ①)

      ^
          0o
          [0-7]+(_[0-7]+)*
      $
      
    • 二进制(TOML 0.5 新增;不能为负数 ①)

      ^
          0b
          [01]+(_[01]+)*
      $
      

    ① TOML 1.0 中正式澄清,不能为负数的意思是这些非十进制表示法是无符号的,因此 + 也是不可以使用的。

  2. 浮点数

    • 小数

      ^
          [+-]?
          (0|[1-9][0-9]*(_[0-9]+)*)
          
          \.
          [0-9]+(_[0-9]+)*
      $
      
    • 科学记数法(TOML 0.3 新增;TOML 1.0 开始支持指数部分的前导零)

      ^
          [+-]?
          (0|[1-9][0-9]*(_[0-9]+)*)
          
          (
              \.
              [0-9]+(_[0-9]+)*
          )?
          
          [eE]
          [+-]?
          [0-9]+(_[0-9]+)*
      $
      
    • 特殊浮点值(TOML 0.5 新增)

      ^
          [+-]?
          (inf|nan)
      $