如何判断浮点数计算溢出

blossom007cn 2008-03-10 10:47:43
请教各位在C中如何判断浮点数计算溢出?
...全文
2832 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
nineforever 2009-01-16
  • 打赏
  • 举报
回复
#include <fpieee.h>
#include <excpt.h>
#include <float.h>

int fpieee_handler(_FPIEEE_RECORD *pieee)
{
if (pieee->Cause.Overflow == 1) { //处理溢出
return EXCEPTION_CONTINUE_EXECUTION;
} else {
return EXCEPTION_EXECUTE_HANDLER;
}
}

int main()
{
__try {
unsigned int u;
unsigned int control_word;
_controlfp_s(&control_word, 0, 0);
u = control_word & (~_EM_OVERFLOW);
_controlfp_s( &control_word, u, _MCW_EM);

//你的代码
}
__except (_fpieee_flt(GetExceptionCode(),
GetExceptionInformation(),
fpieee_handler)){
}
}
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 Treazy 的回复:]
IEEE754!
[/Quote]
???
yalongwan 2009-01-15
  • 打赏
  • 举报
回复

//FLOAT型变量溢出判断
if ( ftemp > 3.402823466e+38F || ftemp < 1.175494351e-38F )
cout<<"error"<<endl;
星羽 2008-03-11
  • 打赏
  • 举报
回复

自己注意了

见过这样的

#include <iostream>
#include "float.h"
using namespace std;

int main()
{
float f = 0.f;
float d = -100.f / f;

if (d > FLT_MAX || d < FLT_MIN)
cout<<"error"<<endl;

return 0;

}


ReViSion 2008-03-11
  • 打赏
  • 举报
回复
溢出又不会产生错误,我觉得只有我们自己去注意啰
Treazy 2008-03-11
  • 打赏
  • 举报
回复
IEEE754!
sheenl 2008-03-11
  • 打赏
  • 举报
回复
你怎么判断整数溢出的?
dubiousway 2008-03-11
  • 打赏
  • 举报
回复
转:

浮点数为了节省空间,一般采用规格化的

也就是2的N次方(N为阶码)乘尾码,得到具体的数值
规格化浮点数表示,尾码的首尾一般要用1表示,用来表示数的有效位数,而数值的大小可通过对阶码的移位来改变,所以说,浮点数是否产生溢出只取决于阶码的大小

实例参考:
http://ie.hztc.edu.cn/~lzhang/jsjzc/chp3/chp3_5.htm

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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