Có ai biết phương pháp để kiểm tra xem một đôi (hoặc số nguyên) là vô hạn, ví dụ khi hoạt động 1/0 được thực hiện?Kiểm tra đối tượng vi phạm mục tiêu
isfinite (n) dường như không hoạt động.
Có ai biết phương pháp để kiểm tra xem một đôi (hoặc số nguyên) là vô hạn, ví dụ khi hoạt động 1/0 được thực hiện?Kiểm tra đối tượng vi phạm mục tiêu
isfinite (n) dường như không hoạt động.
Bạn có thể kiểm tra
if(d == INFINITY) {}
hoặc
if(d > DBL_MAX) {}
INFINITY
là một biểu phao liên tục quy định tại math.h
đại diện cho dương vô cực;
DBL_MAX
là hằng số được xác định trong float.h
đại diện cho số tăng gấp đôi lớn nhất có thể được biểu diễn.
Kiểm tra cũng here
<math.h> có một macro, isinf
, được xác định để kiểm tra kích thước của đối số của nó và sau đó gọi các __isinf
chức năng thích hợp cho các loại hình:
#define isinf(x) \
( sizeof (x) == sizeof(float) ? __isinff((float)(x)) \
: sizeof (x) == sizeof(double) ? __isinfd((double)(x)) \
: __isinf ((long double)(x)))
vĩ mô là giống nhau trong kiến trúc/i386/math.h và kiến trúc/arm/math.h; việc triển khai các hàm có lẽ khác nhau.
này sẽ trở lại đúng với vô cực tiêu cực cũng như tích cực, bạn nên xảy ra gặp phải một điều như vậy:
2011-10-26 18: 41: 53,424 ToInfinityEtc [30.197: 903] Đúng vậy!
2011-10-26 18: 41: 53.426 ToInfinityEtc [30197: 903] Bạn betcha!
nhưng isinf chỉ dành cho trình biên dịch GNU. không tương thích với llvm. xcode nói "sử dụng số nhận dạng chưa được xác nhận là" mặc dù cờ + nhấp vào điều hướng đến cmath.I đã nhập toán học.h theo cách thủ công. nhưng vẫn điều hướng đến cmath và yes không thể biên dịch vì lỗi này "sử dụng mã định danh undeclerated isinf". cuối cùng tôi thay thế std :: isinf thay vì isinf bây giờ biên dịch. –
math.h và 'isinf()' [đều là một phần của tiêu chuẩn POSIX] (http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/math.h.html), @N.Ramos. Họ không liên quan gì tới GCC. Bạn có một vấn đề khác ở đâu đó. –
Một số nguyên không thể là vô hạn. –
Bạn có thể kiểm tra 'x * 2 == x && x! = 0' hoặc một cái gì đó tương tự ... Đối với NaN bạn có thể kiểm tra' x! = X'. –
Bạn có thể làm rõ những gì bạn có nghĩa là bởi "' isfinite() 'dường như không hoạt động."? –