Có cách nào để tính toán gốc thứ n của double trong mục tiêu-c không?Tính toán gốc thứ n?
Tôi dường như không thể tìm thấy chức năng phù hợp.
Có cách nào để tính toán gốc thứ n của double trong mục tiêu-c không?Tính toán gốc thứ n?
Tôi dường như không thể tìm thấy chức năng phù hợp.
Bạn phải sử dụng chức năng pow:
pow(d, 1.0/n)
Về mặt toán học, gốc thứ n của x là x với lũy thừa là 1/n.
Tôi không biết cú pháp của mục tiêu-c sẽ là gì, nhưng về cơ bản bạn chỉ muốn sử dụng chức năng nguồn với 1/n làm số mũ.
Đối với rễ đánh số lẻ (ví dụ như khối) và số âm, kết quả của gốc đang được xác định rõ và tiêu cực, nhưng chỉ sử dụng pow(value, 1.0/n)
sẽ không hoạt động (bạn lấy lại 'NaN' - không phải là số).
Vì vậy, sử dụng này để thay thế:
int f = (value < 0 && (n % 2 == 1)) ? -1 : 1;
root = pow(value * f, 1.0/n) * f
Nó có thể là khôn ngoan để sử dụng một phao rõ ràng ở đây 'pow (d, 1,0/n) ', vì nếu không nó sẽ không làm việc với n là một số nguyên. – joerick
quan sát tốt – fceruti
Điều này sẽ không hoạt động đối với các số lẻ (ví dụ: khối) và giá trị âm - xem câu trả lời của tôi bên dưới. –