例如,是否存在一个操作符来处理这个问题?

float Result, Number1, Number2;

Number1 = 2;
Number2 = 2;

Result = Number1 (operator) Number2;

在过去,^操作符在其他语言中用作指数操作符,但在c#中,它是位操作符。

我必须写一个循环或包含另一个命名空间来处理指数运算吗?如果是这样,我如何处理使用非整数的指数运算?


当前回答

因为还没有人写过一个函数来处理两个整数,这里有一种方法:

private static long CalculatePower(int number, int powerOf)
{
    long result = number;
    for (int i = 2; i <= powerOf; i++)
        result *= number;
    return result;
}

或者在VB中。NET:

Private Function CalculatePower(ByVal number As Integer, ByVal powerOf As Integer) As Long
    Dim result As Long = number
    For i As Integer = 2 To powerOf
        result = result * number
    Next
    Return result
End Function
CalculatePower(5, 3) ' 125
CalculatePower(8, 4) ' 4096
CalculatePower(6, 2) ' 36

其他回答

我无意中看到这篇文章,希望在我的代码中使用科学符号,我使用了

4.95*Math.Pow(10,-10);

但后来我发现你能做到

4.95E-10;

我只是想把这句话加给和我处境相似的人。

一个好的幂函数是

public long Power(int number, int power) {
    if (number == 0) return 0;
    long t = number;
    int e = power;
    int result = 1;
    for(i=0; i<sizeof(int); i++) {
        if (e & 1 == 1) result *= t;
        e >>= 1;
        if (e==0) break;
        t = t * t;
    }
}

的数学。Pow功能使用了处理器的电源功能,效率更高。

在MSDN上有一篇关于c#团队为什么不存在指数运算符的博文。

可以加上一个幂 语言的运算符,但是 执行此操作是公平的 这在大多数程序中都很少见,而且 加上一个似乎不合理 调用Math.Pow()时的运算符是 简单。


你问:

我是否需要写一个循环或包含 另一个要处理的名称空间 指数操作吗?如果是,该怎么办 我处理指数运算用 非整数吗?

数学。Pow支持双参数,因此不需要自己编写。

它不是运算符,但你可以写自己的扩展函数。

public static double Pow(this double value, double exponent)
{
    return Math.Pow(value, exponent);
}

这允许你写作

a.Pow(b);

而不是

Math.Pow(a, b);

我认为这使得a和b之间的关系更加清晰,而且你可以避免一遍又一遍地写“数学”。

因为还没有人写过一个函数来处理两个整数,这里有一种方法:

private static long CalculatePower(int number, int powerOf)
{
    long result = number;
    for (int i = 2; i <= powerOf; i++)
        result *= number;
    return result;
}

或者在VB中。NET:

Private Function CalculatePower(ByVal number As Integer, ByVal powerOf As Integer) As Long
    Dim result As Long = number
    For i As Integer = 2 To powerOf
        result = result * number
    Next
    Return result
End Function
CalculatePower(5, 3) ' 125
CalculatePower(8, 4) ' 4096
CalculatePower(6, 2) ' 36