Từ http://msdn.microsoft.com/en-us/library/system.math.pow.aspxMath.pow lấy một giá trị số nguyên
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 mất đôi như các đối số, nhưng ở đây chúng tôi đang đi qua trong ints.
Câu hỏi: Có nguy cơ nào xảy ra lỗi làm tròn dấu phẩy động nếu có chuyển đổi tiềm ẩn xảy ra gấp đôi không?
Nếu có, nó là tốt hơn để sử dụng một cái gì đó như:
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;
}
câu hỏi liên quan: http://stackoverflow.com/questions/383587/how-do-you-do-integer-exponentiation-in-c Một số đọc tốt trong câu hỏi đó và liên kết có liên quan – dash
Xem thêm: http://stackoverflow.com/questions/936541/math-pow- – dash
Và [this one] (http://stackoverflow.com/questions/4297454/c-sharp-math-pow-is -not-calculating-correct) về các lỗi làm tròn. –