Hàm ilogb () trong C ++ trả về phần tích phân của lôgarit của | x |, sử dụng FLT_RADIX làm cơ số cho lôgarit.
Điều này được xác định trong tệp tiêu đề.
Về mặt toán học,
x = ý nghĩa và * FLT_RADIXexponent
Ý nghĩa và là một giá trị dấu phẩy động trong phạm vi (1.0, 2.0), x là đối số được truyền cho ilogb () và số mũ là giá trị nguyên được trả về bởi ilogb (). Giá trị của FLT_RADIX nói chung là 2.
Giá trị được trả về bởi ilogb () nhỏ hơn một so với số mũ được tạo bởi hàm frexp (), vì ý nghĩa và nằm trong khoảng (1.0, 2.0) thay vì (0.5, 1.0) như trong frexp ().
ilogb () nguyên mẫu (Theo tiêu chuẩn C ++ 11)
int ilogb (kép x); int ilogb (float x); int ilogb (dài kép x); int ilogb (T x); // Đối với kiểu tích phân
ilogb () Tham số
Hàm ilogb () nhận một đối số duy nhất mà ilogb được tính.
ilogb () Giá trị trả về
Hàm ilogb () trả về phần tích phân của lôgarit của | x |, sử dụng FLT_RADIX làm cơ số cho lôgarit.
- Nếu đối số là 0, nó trả về FP_LOGB0.
- Nếu đối số là NaN, nó trả về FP_LOGBNAN.
- Nếu đối số là vô hạn, nó trả về INT_MAX.
Ví dụ 1: Hàm ilogb () hoạt động như thế nào trong C ++?
#include #include #include using namespace std; int main() ( int result; double significand; double x = 16.81; result = ilogb(x); significand = x / pow(FLT_RADIX, result); cout << "ilogb (" << x << ") = " << result << endl; cout << x << " = " << significand << " * " << FLT_RADIX << "^" << result << endl << endl; return 0; )
Khi bạn chạy chương trình, đầu ra sẽ là:
ilogb (16,81) = 4 16,81 = 1,05062 * 2 4
Ví dụ 2: Hàm ilogb () với kiểu tích phân
#include #include #include using namespace std; int main() ( int result, x = 19; result = ilogb(x); double significand = x/pow(FLT_RADIX,result); cout << "ilogb (" << x << ") = " << result << endl; cout << x << " = " << significand << " * " << FLT_RADIX << "^" << result << endl << endl; return 0; )
Khi bạn chạy chương trình, đầu ra sẽ là:
ilogb (19) = 4 19 = 1.1875 * 2 4