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

float Result, Number1, Number2;

Number1 = 2;
Number2 = 2;

Result = Number1 (operator) Number2;

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

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


当前回答

我很惊讶没有人提到这一点,但对于简单的(可能是最常见的)平方情况,您只需将其自身相乘。

float someNumber;

float result = someNumber * someNumber;

其他回答

我很惊讶没有人提到这一点,但对于简单的(可能是最常见的)平方情况,您只需将其自身相乘。

float someNumber;

float result = someNumber * someNumber;

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

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

这允许你写作

a.Pow(b);

而不是

Math.Pow(a, b);

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

c#语言没有强大的运算符。然而,. net框架提供了数学。战俘的方法:

返回指定数字的指定幂。

你的例子是这样的:

float Result, Number1, Number2;

Number1 = 2;
Number2 = 2;

Result = Math.Pow(Number1, Number2);

一个好的幂函数是

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功能使用了处理器的电源功能,效率更高。

无论如何,当取2的幂来定义二进制常数时,我确实忽略了^运算符。不能在这里使用Math.Pow(),但将无符号int(1)向左移动指数的值是可行的。当我需要定义一个常数(2^24)-1时:

public static int Phase_count = 24;
public static uint PatternDecimal_Max = ((uint)1 << Phase_count) - 1;

记住类型必须是(uint) << (int)。