我正在挖掘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.这是出现的情况,但他们没有使用任何运营商?
这个黑魔法是什么?
不,你对符号感到困惑.
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)
| 归档时间: |
|
| 查看次数: |
181 次 |
| 最近记录: |