我不太擅长数学,而且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 |
这意味着100 ^ 3
在底层执行以下计算:
decimal binary
100 = 0110 0100
3 = 0000 0011
--- --------- ^
103 = 0110 0111
当然,使用 Math.Pow(100, 3)
并不等同于一百万的结果。您可以使用该方法或其他现有答案之一。
double dimensions = 100 * 100 / Math.Pow(100, 3); // == 0.01
System.Math
中的 Math.Pow
。请勿使用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);
}
public static extern double Pow(double x, double y);
所以我无法查看源代码,我错在哪里了? - Christopher Aicherx^x
,你会怎么做? - zedlingpublic 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);
}
var dimensions = 1.0f/100
? :) - CompuChip