在C#MSCorLib中没有运算符的乘法?

Ant*_*ell 1 c# mscorlib

我正在挖掘MSCoreLib,我发现了一些有趣的东西.

我很困惑这甚至是如何工作的.

(参见http://referencesource.microsoft.com/#mscorlib/system/math.cs第32行)

   // This table is required for the Round function which can specify the number of digits to round to
      private static double[] roundPower10Double = new double[] { 
          1E0, 1E1, 1E2, 1E3, 1E4, 1E5, 1E6, 1E7, 1E8,
          1E9, 1E10, 1E11, 1E12, 1E13, 1E14, 1E15
      };          

      public const double E  = 2.7182818284590452354;
Run Code Online (Sandbox Code Playgroud)

看起来他们正在创建一个双数组.然后,为每个值乘以1 * E * nth.这是出现的情况,但他们没有使用任何运营商?

这个黑魔法是什么?

Wil*_*sem 6

不,你对符号感到困惑.

2e4 == 2E4 == 20000
Run Code Online (Sandbox Code Playgroud)

只是意味着2*10 ^ 4.e或者E是"指数"的表示法.防止一个人写很多零是很有用的.第二个E与第一个无关.第二个是标识符.但是double文字中不允许使用标识符(通常是文字).

示例:

假设您希望存储Avogadro常数,那么您可以写:

double Avogadro = 602300000000000000000000.0;
Run Code Online (Sandbox Code Playgroud)

但它令人困惑(因为你需要计算零,一个人很容易犯错误).然而,人们可以写道:

double Avogadro = 6.023e23;
Run Code Online (Sandbox Code Playgroud)