[英]Visual Studio always breaking on “Floating-point inexact result”
该网站指出:
默认情况下,运行时库会屏蔽所有浮点异常。
在我看来,您的代码通过使用属于名为_clearfp(...)
、 _controlfp(...)
或_controlfp_s(...)
一组函数的一个或多个函数来更改此默认值。
问题的解决方法是将中断异常掩码_MCW_EM设置为默认值。 有关掩码常量和值的更多信息,请访问此网站。
您可以使用以下代码将 _MCW_EM 设置为默认值:
//Read
unsigned int fp_control = 0;
_controlfp_s(&fp_control, 0, 0);
//Make changes
unsigned int new_fp_control = fp_control | _EM_INVALID | _EM_DENORMAL | _EM_ZERODIVIDE | _EM_OVERFLOW | _EM_UNDERFLOW | _EM_INEXACT;
//Update
_controlfp_s(&fp_control, new_fp_control, _MCW_EM);
此代码应该可以解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.