如何控制浮点异常.
2004-10-05 15:53
253 查看
//浮点异常的控制位
#define FPUEM_INVALIDOP 0x01
#define FPUEM_DENORMALOP 0x02
#define FPUEM_ZERODIVIDE 0x04
#define FPUEM_OVERFLOW 0x08
#define FPUEM_UNDERFLOW 0x10
#define FPUEM_PRECISON 0x20
#define __FORCE_INLINE__ __inline
/*----------------------------------------------------------
打开指定的浮点异常
-----------------------------------------------------------*/
__FORCE_INLINE__ static void enableFloatException(__int16 excWord = 0x000f)
{
__int16 cw;
__asm
{
not excWord
fstcw cw
mov ax , excWord
and cw , ax
fldcw cw
}
}
/*----------------------------------------------------------
关闭指定的浮点异常
-----------------------------------------------------------*/
__FORCE_INLINE__ static void disableFloatException(__int16 excWord = 0x000f)
{
__int16 cw;
__asm
{
fstcw cw
mov ax , excWord
or cw , ax
fldcw cw
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int a = 10;
float b = 0;
float c;
float pi = 3.1415926/2.0 ;
__int16 cw=0x0000;
enableFloatException();
c = a/b;
disableFloatException();
c= a/b;
return c;
}
#define FPUEM_INVALIDOP 0x01
#define FPUEM_DENORMALOP 0x02
#define FPUEM_ZERODIVIDE 0x04
#define FPUEM_OVERFLOW 0x08
#define FPUEM_UNDERFLOW 0x10
#define FPUEM_PRECISON 0x20
#define __FORCE_INLINE__ __inline
/*----------------------------------------------------------
打开指定的浮点异常
-----------------------------------------------------------*/
__FORCE_INLINE__ static void enableFloatException(__int16 excWord = 0x000f)
{
__int16 cw;
__asm
{
not excWord
fstcw cw
mov ax , excWord
and cw , ax
fldcw cw
}
}
/*----------------------------------------------------------
关闭指定的浮点异常
-----------------------------------------------------------*/
__FORCE_INLINE__ static void disableFloatException(__int16 excWord = 0x000f)
{
__int16 cw;
__asm
{
fstcw cw
mov ax , excWord
or cw , ax
fldcw cw
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int a = 10;
float b = 0;
float c;
float pi = 3.1415926/2.0 ;
__int16 cw=0x0000;
enableFloatException();
c = a/b;
disableFloatException();
c= a/b;
return c;
}
相关文章推荐
- LUCENE 2.9 如何正常读取压缩后的整形,长整形及浮点数值?(解读 Invalid shift value in prefixCoded string 异常)
- 权限由shiro控制后 如何在 web.xml中拦截404 500等等异常
- spirngMVC如何在项目中打印异常日志+springmvc事务控制详解
- C++ 如何控制浮点数的位数
- 如何用javascript控制上传文件的大小?
- 使用JS跳转时如何控制Target属性
- 局域网内部管理行为应该如何控制?
- 如何使用Git源控制与Xcode在iOS 6
- 如何用adb控制MTKLogger
- GCC编译之如何控制共享文件导出符号
- rman如何在nomount模式下恢复丢失的所有控制文件
- 使用ffmpeg编码时,如何设置恒定码率,并控制好关键帧I帧间隔
- 如何用CSS控制图片自适应大小
- c#中如何控制模态子窗体中的进度条
- 说说如何抛出Java异常
- Cocos2d-x如何控制动作速度
- 在PB中如何控制DATAWINDOW列的修改属性
- Win8如何进入安全模式, Metro应用无法打开 ,用户账号控制设置
- 如何根据异步调用返回数据控制编辑删除等图标的显示
- JAVA如何使用自定义异常