奇思妙想 · 2024年 6月 29日 0

哪些编程语言支持数值中插入分隔符更容易看清楚?

59 次浏览

除了C/ObjC不支持,C++/Java/C#/JS/Swift/VB.NET/Rust/Go/Python 3.6/仓颉 等语言均支持,分隔符一般选择是下划线_, 也有选择用单引号。

  • C++:C++14标准引入了对数字字面量中使用单引号'做分隔支持。
    当然,用-std=c++11会出现build错误。
  • C#:从C# 7.0开始,可以使用下划线在数字字面量中增加可读性。
    可通过编译选项/langversion:6.0确认此功能在7.0以上才会支持:error CS8059: 功能“数字分隔符”在 C# 6 中不可用,请使用 7.0 或更高的语言版本。
    C# 7.2开始支持十六进制数值和二进制数值(0x开头和0b开头)在0x和0b后面插入下划线。
  • Java:从Java 7开始,Java支持在数字字面量中使用下划线。
    反向验证,可通过 -target 1.6 -source 1.6选项确认数字字面量存在下划线有编译错误。
  • JavaScript 从 ES2021 版本开始支持在数值字面量中使用下划线作为分隔符。
  • VB.NET之前不支持,VB.NET最新版已经支持数值中用下划线分隔。例如:
    Dim a as Integer = 1_000
  • Rust/Swift/Go语言都支持数值中用下划线分隔。
  • Python 3.6开始也支持数值用下划线分隔,具体参考:PEP 515 – Underscores in Numeric Literals.
  • 仓颉 支持用下划线在数值字面量中,不论是整型还是浮点型。
    例如1_23代表123,1.2_3代表1.23.

下划线分隔符

你可能会困惑,C#也允许数值中有多个连续的下划线,其实本质上,编译器在解析数值字面量直接忽略下划线,所以多个连续下划线不影响解析,例如 1__200.

  • 需要注意,下划线不能在字面量开头或者结尾。