C#MSCorLib中的无运算符乘法?
我在挖掘MSCoreLib,发现了一些有趣的东西 我不知道这是怎么回事 (参考第32行) 看起来他们正在创建一个双数组。然后,将每个值乘以C#MSCorLib中的无运算符乘法?,c#,mscorlib,C#,Mscorlib,我在挖掘MSCoreLib,发现了一些有趣的东西 我不知道这是怎么回事 (参考第32行) 看起来他们正在创建一个双数组。然后,将每个值乘以1*E*n。这似乎是正在发生的事情,但是他们没有使用任何操作符 这是什么黑魔法 不,你被符号弄糊涂了 2e4 == 2E4 == 20000 简单地说就是2*10^4e或e是“指数”的符号。防止写入大量零是很有用的。第二个E与第一个无关。第二个是标识符。但是double文本(以及一般文本)中不允许使用标识符 示例: 假设您希望存储阿伏伽德罗常数,则可以编写:
1*E*n
。这似乎是正在发生的事情,但是他们没有使用任何操作符
这是什么黑魔法 不,你被符号弄糊涂了
2e4 == 2E4 == 20000
简单地说就是2*10^4e
或e
是“指数”的符号。防止写入大量零是很有用的。第二个E
与第一个无关。第二个是标识符。但是double
文本(以及一般文本)中不允许使用标识符
示例:
假设您希望存储阿伏伽德罗常数,则可以编写:
double Avogadro = 602300000000000000000000.0;
但这是令人困惑的(因为你需要数零,而一个很容易出错)。然而,人们可以这样写:
double Avogadro = 6.023e23;
不,你被符号弄糊涂了
2e4 == 2E4 == 20000
简单地说就是2*10^4e
或e
是“指数”的符号。防止写入大量零是很有用的。第二个E
与第一个无关。第二个是标识符。但是double
文本(以及一般文本)中不允许使用标识符
示例:
假设您希望存储阿伏伽德罗常数,则可以编写:
double Avogadro = 602300000000000000000000.0;
但这是令人困惑的(因为你需要数零,而一个很容易出错)。然而,人们可以这样写:
double Avogadro = 6.023e23;
语法“1E3”只是表达1*10^3
的一种简捷方式。这只是一个编译技巧。但是,请注意,这是一个编译时常量。您不能在其中使用变量。但是,您可以使用小数:2.57E4
=25700。语法“1E3”只是表达1*10^3
的一种简捷方式。这只是一个编译技巧。但是,请注意,这是一个编译时常量。您不能在其中使用变量。但是,您可以使用小数:2.57E4
=25700。这是1E2
表示1*10^2
或更一般地说,xEy=x*10^y
。您也可以使用小写的e
下面定义的公共常数double E=2.7182818284590452354是一个不相关的(但非常重要!)。这是1E2
表示1*10^2
或更一般地说,xEy=x*10^y
。您也可以使用小写的e
下面定义的
public const double E=2.7182818284590452354
是一个不相关的(但非常重要!)。如何工作?除了那个数组和那个E之外,你指的是什么?不。这是语法允许的,你可以在代码中正常使用它:var myDouble=1e3
。它的基本意思是(e是“指数”的快捷方式):1*10^3
。我想您可能感到困惑,因为您找到了一个名为e
的常数。但是数组中的E
不是该常量的名称。它是一种文字符号,意思是x10^
。因为它是文字,所以也不是乘法。它被直接编译成一个特定的数字。顺便说一句:不要把粘贴在源代码中的常量标记与e
混在一起。有两个不同的东西。@sasjaq它不是Euler常数(Euler常数大约等于0,5)-它是Euler数(自然对数的底数)。什么是工作原理?除了那个数组和那个E之外,你指的是什么?不。这是语法允许的,你可以在代码中正常使用它:var myDouble=1e3
。它的基本意思是(e是“指数”的快捷方式):1*10^3
。我想您可能感到困惑,因为您找到了一个名为e
的常数。但是数组中的E
不是该常量的名称。它是一种文字符号,意思是x10^
。因为它是文字,所以也不是乘法。它被直接编译成一个特定的数字。顺便说一句:不要把粘贴在源代码中的常量标记与e
混在一起。这里有两个不同的东西。@sasjaq它不是Euler常数(Euler常数等于0,5左右)-它是Euler数(自然对数的底数)好的,这就是我认为它在做的。我很困惑,因为他们在数组的正下方声明了一个变量,这个变量名就是lol…,好吧,这就是我认为它在做的事情。我只是感到困惑,因为他们在数组的正下方声明了一个变量,这个变量名就是lol。。