请问如何扑捉浮点数除0异常?

yqzq 2005-05-31 10:35:18
是不是浮点数除0没有异常?
我用catch(...)什么都没有扑捉到
除以零后结果是 -1.#IND
这是个什么东西?
我该如何判断得到的数值是否合法呢?

谢谢
...全文
464 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
yqzq 2005-06-13
  • 打赏
  • 举报
回复
to sw100(巍子)
我并不一定非要扑捉到这个异常, 有办法知道结果是个不正常的数字也可以啊
有没有这类的函数?

谢谢
yqzq 2005-06-13
  • 打赏
  • 举报
回复
谢谢,散份
vcmute 2005-06-13
  • 打赏
  • 举报
回复
int _isnan( double x );
int _finite( double x );
sw100 2005-06-10
  • 打赏
  • 举报
回复
不好意思,我是用VC,你可以查一下如何catch hsrdware exception
yqzq 2005-06-10
  • 打赏
  • 举报
回复
请问您说得是不是 vc里的方法啊?
我是用GCC,请问有没有通用点的
vcmute 2005-06-10
  • 打赏
  • 举报
回复
EXCEPTION_FLT_DIVIDE_BY_ZERO
yqzq 2005-06-10
  • 打赏
  • 举报
回复
up
sw100 2005-06-10
  • 打赏
  • 举报
回复
我查了一下,try--catch是用来捉软件异常的software exception,整数除0也是这一类的。我用的是SEH,是从C来的,也就是SDK开发用的。
硬异常我想应该得到编译器的支持才行
beautifulfly 2005-06-08
  • 打赏
  • 举报
回复
sw100(巍子)

你的程序我调试不过去阿

yqzq 2005-06-07
  • 打赏
  • 举报
回复
to mintwlf(Programmer) 以及 各位老大
判断公式很困难,因为里写的比较灵活(55..都是些变态客户的要求)
我只是想这样,如果发生异常 我就让结果为0,并且置标志位
不扑捉异常也行,请问有没有办法来判断当前的 浮点数 为 非法数据?

谢谢
sw100 2005-06-07
  • 打赏
  • 举报
回复
__try {
float x, y=0;
x = 5 / y; // This exception handled by outer block
__try {
x = 0;
y = 27 / x; // This exception handled by inner block
}
__except( GetExceptionCode() == STATUS_FLOATING_DIVIDE_BY_ZERO) {
printf("handled by inner block");
}
}
__except( GetExceptionCode() == STATUS_FLOATING_DIVIDE_BY_ZERO ) {
printf( "handled by outer block" );
}
应该很清楚了
sw100 2005-06-07
  • 打赏
  • 举报
回复
这是一个硬件EXCEPTION,是浮点除法。
STATUS_FLOATING_DIVIDE_BY_ZERO
可以参见MSDN的Hardware Exceptions
yqzq 2005-06-06
  • 打赏
  • 举报
回复
晕,编译器没有提供更直接的方法嘛?
CodeProject-Jerry 2005-06-06
  • 打赏
  • 举报
回复
同意楼上的想法 重载/ 出现错误就报
cooljjyy 2005-06-06
  • 打赏
  • 举报
回复
自己定义一个类,把double封装起来,然后重载各种运算符,最后在/运算符的处理中判断除数是否为0即可。
mintwlf 2005-06-06
  • 打赏
  • 举报
回复
公式再复杂,总能看清楚哪个是除数吧,拿出来判断一下不会非常困难吧?一般不赞成在异常情况下再处理逻辑,一般发生异常的时候都是重置系统初始状态后者忽略不管。
yqzq 2005-06-05
  • 打赏
  • 举报
回复
up
yqzq 2005-06-04
  • 打赏
  • 举报
回复
to jishufenxi(天高云淡)
我的公式非常复杂,不好直接判断的
请问有没有更直接的办法?
谢谢
yqzq 2005-06-03
  • 打赏
  • 举报
回复
那请问我该如何处理 除零这个错误? 把它转换为字符串判断?? 我现在是这样做的
请问有没有更正规点的办法

谢谢
yqzq 2005-06-03
  • 打赏
  • 举报
回复
那请问我该如何处理 除零这个错误? 把它转换为字符串判断?? 我现在是这样做的
请问有没有更正规点的办法

谢谢
加载更多回复(10)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧