如何在 C# 中计算幂次?

问题描述 投票:0回答:10

我不太擅长数学,而且 C# 似乎没有提供幂函数 所以我想知道是否有人知道我将如何进行这样的计算:

var dimensions = ((100*100) / (100.00^3.00));
c# math
10个回答
99
投票

参见Math.Pow。该函数接受一个值并将其提高到指定的幂:

Math.Pow(100.00, 3.00); // 100.00 ^ 3.00

16
投票

您正在寻找静态方法

Math.Pow()


13
投票

我回答这个问题是因为我没有找到任何答案为什么

^
不适用于幂。 C# 中的
^
运算符是一个 异或 运算符,缩写为 XORA ^ B
真值表
显示,只要输入不同,它就会输出 true:

输入A 输入B 输出
0 0 0
0 1 1
1 0 1
1 1 0

Witch 意味着

100 ^ 3
在幕后进行此计算:

decimal   binary
    100 = 0110 0100 
      3 = 0000 0011
    ---   --------- ^
    103 = 0110 0111

With 当然和

Math.Pow(100, 3)
不一样,结果是一百万。您可以使用该答案或其他现有答案之一。


您还可以将代码缩短为这样,从而给出相同的结果,因为 C# 尊重 操作顺序

double dimensions = 100 * 100 / Math.Pow(100, 3); // == 0.01

6
投票

您想要的功能是

Math.Pow
中的
System.Math


6
投票

请勿使用

Math.Pow

当我使用时

for (int i = 0; i < 10e7; i++)
{
    var x3 = x * x * x;
    var y3 = y * y * y;
}

它只需要 230 毫秒,而以下则需要令人难以置信的 7050 毫秒:

for (int i = 0; i < 10e7; i++)
{
    var x3 = Math.Pow(x, 3);
    var y3 = Math.Pow(x, 3);
}

3
投票

以下是计算 -ve 和 +ve 值的 RaiseToPower 十进制值幂的代码。

public decimal Power(decimal number, decimal raiseToPower)
        {
            decimal result = 0;
            if (raiseToPower < 0)
            {
                raiseToPower *= -1;
                result = 1 / number;
                for (int i = 1; i < raiseToPower; i++)
                {
                    result /= number;
                }
            }
            else
            {
                result = number;
                for (int i = 0; i <= raiseToPower; i++)
                {
                    result *= number;
                }
            }
            return result;
        }

3
投票

对于 2 的幂:

var twoToThePowerOf = 1 << yourExponent;
// eg: 1 << 12 == 4096

1
投票

Math.Pow()
返回
double
这样写就好了:

double d = Math.Pow(100.00, 3.00);

0
投票
static void Main(string[] args)
        {
            int i = 2;
            int n = -2;
            decimal y = 1;
            if (n > 0)
            {
                for (int x = 1; x <= n; x++)
                    y *= i;               
            }
            if (n < 0)
            {
                for (int x = -1; x >= n; x--)
                    y /= i;
            }
            Console.WriteLine(y);
        }

0
投票

我想找到一种手动完成的方法,这样我就可以在脑海中跟踪它:

//Raise inputNumber (100) to the power of powerOf (3) manually:

//Inputs
int inputNumber = 100;
int powerOf = 3;
int powResult = inputNumber;

//The result will be to multiply the previous result times the inputNumber, powerOf times
for (int i = 0; i < powerOf; i++)
{
    powResult = powResult * inputnumber;
}

//Output the result - 100 ^ 3 = 100,000,000
Console.WriteLine(powResult);
© www.soinside.com 2019 - 2024. All rights reserved.