出处:http://blog.csdn.net/delphiwcdj/article/details/6261931

方法1:判断是否溢出,一是使用函数判断,二是与最大最小值比较

#include <cstdio>
#include <cmath>
#include <cfloat>
int main()
{
// double类型
double dval1 = 1.2;
double dval2 = 1.2*pow((double)10,308);
double dval3 = 1.2*pow((double)10,309);
printf("%d/n",_finite(dval1));// 1 未溢出
printf("%d/n",_finite(dval2));// 1 
printf("%d/n",_finite(dval3));// 0 溢出
if (dval1 > DBL_MAX || dval1 < DBL_MIN)
printf("overflow/n");
if (dval2 > DBL_MAX || dval2 < DBL_MIN)
printf("overflow/n");
if (dval3 > DBL_MAX || dval3 < DBL_MIN)
printf("overflow/n");
// float类型
float fval1 = 1.2f;
float fval2 = 1.2f*(float)pow((double)10,38);
float fval3 = 1.2f*(float)pow((double)10,39);
printf("%d/n",_finite(fval1));// 1 未溢出
printf("%d/n",_finite(fval2));// 1 
printf("%d/n",_finite(fval3));// 0 溢出
if (fval1 > FLT_MAX || fval1 < FLT_MIN)
printf("overflow/n");
if (fval2 > FLT_MAX || fval2 < FLT_MIN)
printf("overflow/n");
if (fval3 > FLT_MAX || fval3 < FLT_MIN)
printf("overflow/n");
return 0;

#include <iostream>
#include <float.h>
using namespace std;    
int main()
{
float f = 0.f;
float d = -100.f / f;// -1.#INF000
if (d > FLT_MAX || d < FLT_MIN)
cout<<"error"<<endl;
float x = 1e100;
if (x > FLT_MAX || x < FLT_MIN)
cout<<"error"<<endl;
return 0;
}

方法2:捕获浮点数溢出异常

#include <cstdio>
#include <cmath>
#include <cfloat>
#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);
// 你的代码
// double类型
double dval3 = 1.2*pow((double)10,309);
printf("%d/n",_finite(dval3));// 0 溢出=> 1
if (dval3 > DBL_MAX || dval3 < DBL_MIN)
printf("overflow/n");
// float类型
float fval3 = 1.2f*(float)pow((double)10,39);
printf("%d/n",_finite(fval3));// 0 溢出=> 1
if (fval3 > FLT_MAX || fval3 < FLT_MIN)
printf("overflow/n");
}
__except (_fpieee_flt(GetExceptionCode(),
GetExceptionInformation(),
fpieee_handler)){
}
}

float.h文件中定义的一些常量:

...
#define DBL_DIG         15                      /* # of decimal digits of precision */
#define DBL_EPSILON     2.2204460492503131e-016 /* smallest such that 1.0+DBL_EPSILON != 1.0 */
#define DBL_MANT_DIG    53                      /* # of bits in mantissa */
#define DBL_MAX         1.7976931348623158e+308 /* max value */
#define DBL_MAX_10_EXP  308                     /* max decimal exponent */
#define DBL_MAX_EXP     1024                    /* max binary exponent */
#define DBL_MIN         2.2250738585072014e-308 /* min positive value */
#define DBL_MIN_10_EXP  (-307)                  /* min decimal exponent */
#define DBL_MIN_EXP     (-1021)                 /* min binary exponent */
#define _DBL_RADIX      2                       /* exponent radix */
#define _DBL_ROUNDS     1                       /* addition rounding: near */
#define FLT_DIG         6                       /* # of decimal digits of precision */
#define FLT_EPSILON     1.192092896e-07F        /* smallest such that 1.0+FLT_EPSILON != 1.0 */
#define FLT_GUARD       0
#define FLT_MANT_DIG    24                      /* # of bits in mantissa */
#define FLT_MAX         3.402823466e+38F        /* max value */
#define FLT_MAX_10_EXP  38                      /* max decimal exponent */
#define FLT_MAX_EXP     128                     /* max binary exponent */
#define FLT_MIN         1.175494351e-38F        /* min positive value */
#define FLT_MIN_10_EXP  (-37)                   /* min decimal exponent */
#define FLT_MIN_EXP     (-125)                  /* min binary exponent */
#define FLT_NORMALIZE   0
#define FLT_RADIX       2                       /* exponent radix */
#define FLT_ROUNDS      1                       /* addition rounding: near */
...

判断浮点数溢出的方法相关推荐

  1. Python|装饰器|执行时间|递归|动态属性|静态方法和类|继承和多态|isinstance类型判断|溢出|“魔法”方法|语言基础50课:学习记录(6)-函数的高级应用、面向对象编程、进阶及应用

    文章目录 系列目录 原项目地址: 第16课:函数的高级应用 装饰器(记录执行时间的例子) 递归调用 简单的总结 第17课:面向对象编程入门 类和对象 定义类 创建和使用对象 初始化方法 打印对象 面向 ...

  2. python判断字母数字_Python判断字符串是否为字母或者数字(浮点数)的多种方法

    str为字符串s为字符串 str.isalnum() 所有字符都是数字或者字母 str.isalpha() 所有字符都是字母 str.isdigit() 所有字符都是数字 str.isspace() ...

  3. 定点数与浮点数的表示方法

    计算机组成原理--定点数与浮点数 计算机中常用的数据表示格式有两种,一是定点格式,二是浮点格式.一般来说,定点格式容许的数值范围有限,要求的处理硬件比较简单.而浮点格式容许的数值范围很大,要求的处理硬 ...

  4. Java如何判断整数溢出,溢出后怎么得到提示?

    作者:Aaron_涛 blog.csdn.net/qq_33330687/article/details/81626157 问题 在之前刷题的时候遇见一个问题,需要解决int相加后怎么判断是否溢出,如 ...

  5. 素数(质数)判断的五种方法

    素数判断的五种方法 素数判断是我们写程序过程中经常遇见的一个问题,于是今天我简单地整理一下常用的素数判断的方法. 素数的介绍 素数定义 质数(prime number)又称素数,有无限个.一个大于1的 ...

  6. 素数判断的几种方法代码实现及其复杂度分析

     素数判断的几种方法代码实现及其复杂度分析  原文链接:http://blog.csdn.net/infinitezhen/article/details/8961964 一. 朴素判断素数 根据素数 ...

  7. 计算机中浮点数表示方法,浮点数的表示方法

    <浮点数的表示方法>由会员分享,可在线阅读,更多相关<浮点数的表示方法(2页珍藏版)>请在人人文库网上搜索. 1.浮点数的表示方法 一.浮点数表示 一个数的浮点形式(设基数是2 ...

  8. javascript 往一个节点动态添加元素、内容并判断是否溢出,溢出则删除

    添加元素简单: var left_div = document.getElementById("left_div");var para = document.createEleme ...

  9. 单行文本 判断是不是溢出

    判断文本一行文本是不是溢出的方法 ,常用于查看更多 .text_wrapper{height: 20px;line-height: 20px;width: 150px;border: 1px salm ...

最新文章

  1. pr 文件结构不一致_建筑工程合同与招投标文件不一致,工程结款应该以哪份文件为主?...
  2. 身份证丢失后被刷脸欠上万贷款,银行:人脸识别到就是你借的!
  3. java 开发工具_Java开发工具和环境,你了解多少?
  4. 【转】维护工厂库存的一般设置
  5. 剑三服务器文件在哪里,剑三服务器同步设置在哪
  6. Java黑皮书课后题第5章:**5.36(商业应用:检测ISBN)使用循环简化编程练习题3.9
  7. NGcodec谈FPGA编码与HEVC和AV1
  8. settimeout( )是全局函数吗_JS函数的执行
  9. 【MySQL】基于Docker的Mysql主从复制搭建
  10. Visual Studio会让嵌入式开发变得更香
  11. 嵌入式软件开发工程师的养成之路——从 推挽输出 开始
  12. 从零开始——安装插件和各种专业术语
  13. InDesign 教程,如在使用的不同类型的框架?
  14. Android Mvp架构的小demo
  15. 原创度检测工具-文章原创度在线检测免费
  16. 在vc++如何响应键盘和鼠标事件-visual c++
  17. 安装studio3t
  18. HTML figure 标签 figcaption 标签
  19. Excel VBA 根据单元格内容更改工作表名称
  20. Java学习第一节jdk的安装及相关知识

热门文章

  1. 遥感在计算机领域的应用,遥感技术在测绘工作中的应用分析
  2. java窗口如何写不能移动_[求助]请教高手,下面程序为何组件不能自由移动,百思不得其解!...
  3. Android中的Dialog
  4. 登录功能和公聊功能的实现
  5. orm mysql_ORM介绍
  6. java SSM框架
  7. ubuntu没有interfaces文件_ubuntu里终端中eth0为何没有显示IP地址
  8. c++的引用是什么意思?怎么回事?
  9. Linux 中的动态链接库和静态链接库是干什么的?
  10. 从postgress 读取数据