繁体   English   中英

Visual Studio 总是打破“浮点不精确结果”

[英]Visual Studio always breaking on “Floating-point inexact result”

所以这在 VS 2015 和 2017 中都发生了。每次我运行我的应用程序时,它不断地在msvcrt.dll Floating-point inexact result异常上中断,如果我单击Continue ,异常会一次又一次地出现。 我从Exception Settings取消选中它,但无论我尝试什么,我似乎都无法阻止它停止。

这就是我得到的:

浮点不精确结果

启用或禁用Just My Code似乎没有任何效果,而且这个问题也发生在我的 Visual Studio 2015 中。

请问这个怎么解决?

该网站指出:

默认情况下,运行时库会屏蔽所有浮点异常。

在我看来,您的代码通过使用属于名为_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM