C ++ fesetenv () - Thư viện chuẩn C ++

Hàm fesetenv () trong C ++ cố gắng thiết lập môi trường dấu phẩy động từ đối tượng con trỏ đã cho kiểu fenv_t.

Hàm fesetenv () được định nghĩa trong tệp tiêu đề.

nguyên mẫu fesetenv ()

 int fesetenv (fenv_t * envp);

Hàm fesetenv () cố gắng thiết lập môi trường dấu phẩy động từ đối tượng được trỏ tới bởi envp. Giá trị của envp trước đó phải được lấy bằng lệnh gọi đến feholdexcept hoặc fegetenv hoặc là hằng số macro dấu phẩy động.

tham số fesetenv ()

  • envp: Con trỏ tới một đối tượng kiểu fenv_t lưu trữ trạng thái của môi trường dấu phẩy động.

fesetenv () Giá trị trả về

  • Khi thành công, hàm fesetenv () trả về 0.
  • Khi thất bại, nó trả về nonzero.

Ví dụ: Hàm fesetenv () hoạt động như thế nào?

 #include #include #include #pragma STDC FENV_ACCESS ON using namespace std; void print_exceptions() ( cout << "Raised exceptions: "; if(fetestexcept(FE_ALL_EXCEPT)) ( if(fetestexcept(FE_DIVBYZERO)) cout << "FE_DIVBYZERO "; if(fetestexcept(FE_INEXACT)) cout << "FE_INEXACT "; if(fetestexcept(FE_INVALID)) cout << "FE_INVALID "; if(fetestexcept(FE_OVERFLOW)) cout << "FE_OVERFLOW "; if(fetestexcept(FE_UNDERFLOW)) cout << "FE_UNDERFLOW "; ) else cout << "None"; cout << endl; ) void print_current_rounding_direction() ( cout << "Current rounding method: "; switch (fegetround()) ( case FE_TONEAREST: cout << "FE_TONEAREST"; break; case FE_DOWNWARD: cout << "FE_DOWNWARD"; break; case FE_UPWARD: cout << "FE_UPWARD"; break; case FE_TOWARDZERO: cout << "FE_TOWARDZERO"; break; default: cout << "unknown"; ); cout << endl; ) void print_environment() ( print_exceptions(); print_current_rounding_direction(); ) int main(void) ( cout << "Initial environment " << endl; print_environment(); fenv_t envp; /* Save current environment */ fegetenv(&envp); feraiseexcept(FE_INVALID|FE_DIVBYZERO); fesetround(FE_DOWNWARD); cout << "After changing environment " << endl; print_environment(); /* Restores previous environment */ fesetenv(&envp); cout << "Restoring initial environment " << endl; print_environment(); return 0; )

Khi bạn chạy chương trình, đầu ra sẽ là:

 Môi trường ban đầu Tăng ngoại lệ: Không có Phương pháp làm tròn hiện tại: FE_TONEAREST Sau khi thay đổi môi trường Đã tăng ngoại lệ: FE_DIVBYZERO FE_INVALID Phương pháp làm tròn hiện tại: FE_DOWNWARD Khôi phục môi trường ban đầu Đã tăng ngoại lệ: Không Phương pháp làm tròn hiện tại: FE_TONEAREST

thú vị bài viết...