C++ NAN 异常处理
1, NaN即Not a Num,只对于浮点数出现。
当浮点数的除第一位外的其他位均为1时,该浮点数成为NaN。比如,内存表示为0xFFFFFFFFFFFFFFFF的double型数为NaN。
当两个超出范围的浮点数(即INF)进行运算时,运算结果会成为NaN。
2,NaN错误
NaN 用于处理计算中出现的错误情况,比如 0.0 除以 0.0 或者求负数的平方根。由上面的表中可以看出,对于 单精度浮点数,NaN 表示为指数为 emax + 1 = 128(指数域全为 1),且尾数域不等于零的浮点数。IEEE 标准没有要求具体的尾数域,所以 NaN 实际上不是一个,而是一族。不同的实现可以 自由选择尾 数域的值来表达 NaN,比如 Java 中的常量 Float.NaN 的浮点数可能表达为01111111110000000000000000000000,其中尾数域的第一位为 1,其余均为 0(不计隐藏的一位),但这取决系统的硬件架构。Java 中甚至允许程序员自己构造具有特定位模式的 NaN 值(通过 Float.intBitsToFloat() 方法)。比如,程序员可以利用这种定制的 NaN 值中的特定位模式来表达某些诊断信息。
NAN是指not a number。
浮点数在进行除零操作之后,就会变成NAN(INF)。
可以使用下列函数来判断该值是否为NAN(INF)。
库函数:int isnan(double);
int _finite(double);//vc下使用该函数
//若传入的double值无效,函数返回0. 需要包含库文件<float.h>
也可写自定义函数来进行判断(vc下不行)
1 bool is_nan(double dVal) 2 { 3 if (dVal==dVal) 4 return false; 5 6 return true; 7 }
4. The include file
isnan() — Test for NaN
ROOT 中是 Int_t TMath::IsNaN(Double_t x)
==============================================
==============================================
5,Native C++ _isnan()函数的应用
什么是 Native C++?
当表示一个double型数值不为数字时,在.net可以这样表示
double d = double.NaN;
double.NaN的原型如下:
// // Summary: // Represents a value that is not a number (NaN). This field is constant. public const double NaN = 0.0 / 0.0;
在Native C++,如果想表示一个不为数字的double,可以使用下面的函数。
double GenerateNaN() {unsigned long nan[2]={0xffffffff, 0x7fffffff}; // code representing a NaNreturn *( double* )nan; }
判断double类型是不是NaN,可以使用 _isnan() 函数:
double d = GenerateNaN(); if(_isnan(d)) {printf("d is NaN."); }
C++ NAN 异常处理相关推荐
- python简单计算器异常处理_Python实现的简单计算器
GUI运行截图: 上面那个简单的UI是用PyQt4实现的,如果对Qt比较熟悉的话,非常容易上手. 比如: PyQt4里的单行文本框: self.line_edit = QtGui.QLineEdit( ...
- 异常和异常处理(windows平台)
[翻译]异常和异常处理(windows平台) 翻译的不好,莫怪. 原文地址: http://crashrpt.sourceforge.net/docs/html/exception_handling. ...
- 【基础】C#异常处理的总结
一.异常处理的理解? 异常处理是指程序在运行过程中,发生错误会导致程序退出,这种错误,就叫做异常. 因此处理这种错误,就称为异常处理. 二.异常处理如何操作? C# 异常处理时建立在四个关键词之上的: ...
- java 7 异常新特性_Java7的异常处理新特性-addSuppressed()方法等
开发人员对异常处理的try-catch-finally语句块都比较熟悉.如果在try语句块中抛出了异常,在控制权转移到调用栈上一层代码之前,finally语句块中的语句也会执行.但是finally语句 ...
- x86_64与ARM64的signaling NaN与Quiet NaN,以及浮点数的舍入模式
在我们当前常用的主流桌面级处理器以及移动处理器中都可能会涉及到浮点数的运算.而在计算机中浮点数的表达本身是要遵循IEEE754规范的.在此规范中明确定义了哪些浮点数是规格化的,哪些是非规格化的,哪些属 ...
- Python之操作Excel、异常处理、网络编程
知识补充: 1.falsk模块中一些方法总结 import flask from flask import request,jsonify server = flask.Flask(__name__) ...
- Go语言的错误异常处理机制及其应用
一.背景 在日常编写golang程序或阅读别人的golang代码时,我们总会看到如下的一堆代码块: xx, err = func(xx) if err != nil {//do sth. to tac ...
- SpringBoot (二) :全局异常处理设置
说在前面 在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@ExceptionHandler.@InitBinder.@ModelAttribute,并应用到所有 ...
- python pandas 如何找到NaN、缺失值或者某些元素的索引名称以及位置,np.where的使用
我们在处理数据的时候,经常需要检查数据的质量,也需要知道出问题的数据在哪个位置.我找了很久,也尝试了很多办法,都没能找到一种非常直接的函数,本文所要介绍的是一种我认为比较方便的方法:np.where( ...
最新文章
- android 内部存储 清空,Android清空应用内部文件缓存
- springmvc 配置 fastjson解析器
- 可能是把Docker的概念讲的最清楚的一篇文章
- c语言把四位数1234变成4123,用4个1组成一个数-3,4四个数字可以组成数字不重复和自然数的 – 手机爱问...
- 动态调用Web Service
- JSP自定义标签开发入门
- 字符设备驱动基础篇4——字符设备驱动读写接口的操作实践
- 微课|中学生可以这样学Python(例4.5):计算最大函数值
- scala面试题简要总结
- 与程序员相关的CPU缓存知识
- Android实现仿IOS带清空功能的文本输入框
- 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.6.6版)
- 产品使用报告(产品分析)
- 天津理工大学嵌入式实验 Fritzing电路图连线,自定义芯片原理图方法
- sqlalchemy 常用数据类型有哪些?
- 线性代数:求n阶行列式python编写
- c语言程序从哪里开始执行
- ckplayer解析php源码,zblogphp视频主题使用ckplayer播放器说明
- (三)feild ii 相控阵聚焦成像:RF信号到成像全过程
- 电脑怎么连接两个以上的显示器
热门文章
- 使用 Visual Studio 调试 .NET 控制台应用程序
- Java保存MultipartFile至本地目录
- python绘制樱花洒落_Python画图之浪漫樱花
- 完美进化.量化管理管理出效益.王磊老师量化管理2
- c语言的幂乘积表达式,POJ 1845 Sumdiv [素数分解 快速幂取模 二分求和等比数列]
- RuntimeError: Given input size: (256x4x4). Calculated output size: (256x0x0). Output size is too sma
- ntp国家授时中心服务器IP地址
- python学习基础篇Day04(P36~~49)
- 应用统计所需计算机软件,应用统计学-样章试读.PDF
- 往Oracel数据库批量插入数据