Od http://msdn.microsoft.com/en-us/library/system.math.pow.aspxMath.pow biorąc wartość całkowitą
int value = 2;
for (int power = 0; power <= 32; power++)
Console.WriteLine("{0}^{1} = {2:N0}",
value, power, (long) Math.Pow(value, power));
Math.pow trwa służyć jako argumenty, ale tutaj jesteśmy przekazując wskazówki.
Pytanie: Czy istnieje ryzyko błędu zaokrąglania wartości zmiennoprzecinkowej, jeśli występuje niejawne przekształcenie w podwójne zdarzenie?
Jeśli tak, to lepiej użyć czegoś takiego:
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;
}
pokrewne pytanie: http://stackoverflow.com/questions/383587/how-do-you-do-integer-exponentiation-in-c Niektóre dobry odczyt w tej kwestii i powiązane linki – dash
Zobacz też: http://stackoverflow.com/questions/936541/math-pow- – dash
I [ten jeden] (http://stackoverflow.com/questions/4297454/c-sharp-math-pow-is nieprawidłowo obliczające) na błędy zaokrąglania. –