Von http://msdn.microsoft.com/en-us/library/system.math.pow.aspxMath.Pow einen ganzzahligen Wert
int value = 2;
for (int power = 0; power <= 32; power++)
Console.WriteLine("{0}^{1} = {2:N0}",
value, power, (long) Math.Pow(value, power));
Einnahme nimmt Math.Pow verdoppelt sich als Argumente, aber hier passieren wir in ints.
Frage: Besteht die Gefahr von Gleitkomma-Rundungsfehlern, wenn eine implizite Konvertierung in Doppelhappen vorliegt?
Wenn ja, es ist besser, etwas zu verwenden, wie:
public static int IntPow(int x, uint pow)
{
int ret = 1;
while (pow != 0)
{
if ((pow & 1) == 1)
ret *= x;
x *= x;
pow >>= 1;
}
return ret;
}
Verwandte Frage: http://stackoverflow.com/questions/383587/how-do-you-do-integer-exponentiation-in-c Einige gute Lektüre in dieser Frage und verwandte Verbindungen – dash
Sehen Sie auch: http://stackoverflow.com/questions/936541/math-pow- – dash
Und [dieses] (http://stackoverflow.com/questions/4297454/c-sharp-math-pow-is - nicht korrekt berechnen - auf Rundungsfehler. –