指数运算符

时间:2014-02-28 14:53:49

标签: c# variables exponent

我发现,我可以写1E51e5代替100000。有没有办法使用这个运算符/方法/变量的东西?我知道我可以使用Math.Pow(10, 5);,但我想知道这个E是否适用于变量。

5 个答案:

答案 0 :(得分:7)

E表示法仅适用于常量。 Math.Pow(x, 5)是指定变量的唯一内置方法。

修改

但是,Math.Pow接受double并返回double,所以如果你想指数一个整数,你应该看看这个答案:this answer

答案 1 :(得分:6)

e不是运营商。是C#语言的real literal syntax的一部分。它在解析代码时进行评估,并且只能用于表示常量文字。

就像您可以使用后缀f表示浮点数,或d表示双精度数一样,XeY语法允许您定义双精度数值X * 10^Y。当您使用常数编写代码时,它只是为了方便。

下面是一些关于你可以用所有这些不同语法做什么的例子,以及它们相当于哪种类型和常量字面值:

var a = 2e5;      // (double) 200000
var b = 2.3e3;    // (double) 2300
var c = 13f;      // (single) 13
var d = 53d;      // (double) 53
var e = 1.2e3f;   // (single) 1200
var f = 2.3m;     // (decimal) 2.3
var g = 1.23e-4m; // (decimal) 0.000123

但是,这些都没有暴露给.NET运行时,它在编译时全部被评估并存储为常量文字暴露 - 短语法和完整常量之间绝对没有区别。因此,此功能不适用于仅在运行时存在的变量。如果需要对这些进行取幂,则必须使用其他方法,例如myVariable * 10e5

答案 2 :(得分:1)

您可以使用位移运算符执行类似的操作:

int i = 1;
Console.WriteLine(i << 3); // 8

bitshift运算符<<与1E5中的E完全相同。仅在基数2,而不是10。

答案 3 :(得分:1)

1E5表示法是指一个数值,根据定义,它是一个值。您的变量可能具有数值,只要它是数字类型(如double),但它可以更改其值(这就是它被称为变量的原因)。因此,您的变量是值的占位符,而不是值,您不能使用此表示法,因为它仅保留给值。

答案 4 :(得分:0)

使用“e”作为运算符(ish)仅限于常量。

如果这对变量起作用,就会造成严重破坏......例如:

Hello = 10;
H = 1;
llo = 5;

x = Hello

“x”现在等于10还是1e5?

Math.Pow(x,y)是您最好的选择。