下面的代码中下划线的意义是什么:
public const long BillionsAndBillions = 100_000_000_000;
这是 C# 7.0 的一个新功能,称为“数字分隔符”。目的是提供更好、更容易的可读性。当在源代码中编写非常长且难以阅读的数字时,它最有用。例如:
long hardToRead = 9000000000000000000;
// With underscores
long easyToRead = 90000_00000_00000_0000;
下划线的位置完全由程序员决定。例如,你可能会遇到这样的奇怪场景:
var weird = 1_00_0_0_000_0000000_0000;
public const decimal GoldenRatio = 1.618_033_988_749_894_848_204_586_834_365_638_117_720M;
编译代码后,编译器会删除下划线,因此这只是为了代码的可读性。所以这个的输出:
public static void Main()
{
long easyToRead = 90000_00000_00000_0000;
Console.WriteLine(easyToRead);
}
将是(注意没有下划线):
9000000000000000000
。有些人希望分隔符是空白空格,但看起来 C# 团队选择了下划线。
数量:
public const long BillionsAndBillions = 100_000_000_000;
具有很好的可读性,特别是如果我们对这些大数字尽可能坚持“千”(三个零组成的组)。在物理和经济学等多个学科中,坚持“千”(三个零组成的组)是很正常的。 C# 7.2 支持此语法,因此这意味着 .NET Framework 4.6.1 或更高版本支持它。
如果您出于某种原因在代码中使用了更旧的框架,以下语法提供了替代方案,它从 C# 和 .NET Framework 1 开始就受到支持:
public const long BillionsAndBillions = (long)1e11;
语法也更加紧凑。请注意,这种电子符号是您在物理学中用来描述非常大或非常小的数字的东西,也是化学和经济学等其他学科中用来描述非常大或非常小的数字的东西。
输入远高于或低于零的许多范围也较少,而且通常许多程序员不熟悉使用它。
请注意,电子表示法返回双精度值,因此这里使用直接转换。在许多示例中,坚持使用 double 会更安全,以避免溢出。
此外,以下是表达大数和小数的方法:
在 C# 中使用电子表示法的大数和小数示例:
double speedOfLightRoughly = 3e18 //300_000_000 meters per second - ca 1 x light speed
更准确地说:
double speedOfLight = 2.99792458e8;
化学中使用的阿伏伽德罗常数:
double avogadrosNumber = 6.022e23;
Stefan Boltzmann 用于天文学和热力学
double stefanBoltzmannConstant = 5.670e-8; //small number : note e-notation with negative sign