我不太擅长数学,而且 C# 似乎没有提供幂函数 所以我想知道是否有人知道我将如何进行这样的计算:
var dimensions = ((100*100) / (100.00^3.00));
参见Math.Pow。该函数接受一个值并将其提高到指定的幂:
Math.Pow(100.00, 3.00); // 100.00 ^ 3.00
我回答这个问题是因为我没有找到任何答案为什么
^
不适用于幂。 C# 中的 ^
运算符是一个 异或 运算符,缩写为 XOR。 A ^ 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
Math.Pow(100, 3)
不一样,结果是一百万。您可以使用该答案或其他现有答案之一。
您还可以将代码缩短为这样,从而给出相同的结果,因为 C# 尊重 操作顺序。
double dimensions = 100 * 100 / Math.Pow(100, 3); // == 0.01
您想要的功能是
Math.Pow
中的System.Math
。
请勿使用
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);
}
以下是计算 -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;
}
对于 2 的幂:
var twoToThePowerOf = 1 << yourExponent;
// eg: 1 << 12 == 4096
Math.Pow()
返回 double
这样写就好了:
double d = Math.Pow(100.00, 3.00);
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);
}
我想找到一种手动完成的方法,这样我就可以在脑海中跟踪它:
//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);