#QNAN、1.#IND和1.#INF等“无效”浮点数说明及其判断

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

在GIS视图上发现部分小区不能正常呈现,通过跟踪异常小区发现其所属基站的经纬度坐标都是-1.#QNAN00000000000无效值,导致小区绘制失败,这些小区均属新入网的3G基站,资源数据还没有维护起来,数据库中对应字段为空,经过TUXEDO接口后数据反映为QNAN无效值。在基础数据完善之前,可在SQL取数据时将空值转化为0,或在接收数据时对此类数据作进一步的过滤。
  此处的1.#QNAN是一个打印呈现,QNAN是指Quiet Not a Number,类似的浮点错误还有SNaN(Signaling Not a Number),通常如0.0/0.0、给负数开平方根等溢出或无效运算就会产生一个NAN结果的表示值,NaN及两种浮点错误的说明如下:
The value NaN (Not a Number) is used to represent a value that does not represent a real number. NaN’s are represented by a bit pattern with an exponent of all 1s and a non-zero fraction. There are two categories of NaN: QNaN (Quiet NaN) and SNaN (Signalling NaN).
A QNaN is a NaN with the most significant fraction bit set. QNaN’s propagate freely through most arithmetic operations. These values pop out of an operation when the result is not mathematically defined.
An SNaN is a NaN with the most significant fraction bit clear. It is used to signal an exception when used in operations. SNaN’s can be handy to assign to uninitialized variables to trap premature usage.
Semantically, QNaN’s denote indeterminate operations, while SNaN’s denote invalid operations. If a return value is a QNaN, it means that it is impossible to determine the result of the operation, a SNaN means that the operation is invalid.
  这样的特殊浮点数还有INF和IND:INF就是Infinity,表示一个无穷大的数,包括正无穷和负无穷;IND则表示无限小,但不确定。如1.0/0.0会产生一个INF无穷大,-1.0/0.0会产生一个负无穷大。
 
  回到最初的错误上,这种无效数据之所以通过了经纬度有效值判断,是因为常规的浮点范围对这类浮点数无效。我们知道常规的浮点数不能直接判0等于,而如果这个浮点数为NaN,那if (f==f) 会得到false结果。但是利用这个结果来判断一个浮点数是否为NaN并不总是安全的,例如用这个宏定义#define isnan(x) ((x) != (x)) ,在某些编译环境下可能就会脱离了你的预期。那如何判断特殊的浮点数呢?各种语言应该都能找到对应的辅助函数或者类方法,在C语言中,可以用float.h中的int _isnan(double x)、int _finite(double x)、int _fpclass(double x)函数来判断,返回结果代表意义分别为:_FPCLASS_SNAN (Signaling NaN)、_FPCLASS_QNAN (Quiet NaN)、_FPCLASS_NINF (Negative Infinity, –INF)、_FPCLASS_PINF (Positive Infinity, +INF);在C++中,可以用STL中的limits类:numeric_limits::quiet_NaN()、numeric_limits::signaling_NaN()、numeric_limits::infinity()等方法。
 
更多信息可参考下面的文章:
http://www.ibm.com/developerworks/cn/java/j-jtp0114/
http://steve.hollasch.net/cgindex/coding/ieeefloat.html
http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=integersReals2

【Z】1.#QNAN1.#IND1.#INF等“… <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 首先说明1.#QNAN是一个打印呈现,QNAN是指Quiet Not a Number,类似的浮点错误还有SNaN(Signaling 阅读详情

相关推荐

1.#INF1.#IND#QNAN:实战中捕获与处理浮点异常的三种策略

本文深入探讨了浮点异常(1.#INF1.#IND#QNAN)的捕获与处理策略,通过实战案例展示了这些异常在程序中的破坏性。文章详细介绍了三种基础检测方法(自比较法、C++11标准库工具位模式检测)以及主动防御策略(编译器选项、运行时控制自定义包装器),帮助开发者构建有效的异常防火墙,确保数值计算的稳定性可靠性。

weixin_29015899的博客 195

envi的dat文件转为tif,在arcgis中出现-1#、1#,无法显示高低值

1、envi-toolbox-save as ...(envi/tiff)-选择文件-勾选no data(我的文件中为0)-存为envi格式文件(.dat)在envi中可以正常显示值范围,但是dat转为tif后,在arcgis中出现-1#inf1#inf情况。2、在arcgis中直接小加号+导入dat文件。

ustining的博客 2770

Arcgis常用技巧汇总

这时会形成一个新图层,所有的点都添加进来了,但现在添加进来的点由于没有 objectID 或者 FID ,现在图层不具备 *.shp 图层的大部分功能,如点的选择,编辑,关联,属性等操作。Excel 中数据 -> 导入外部数据找到保存的 txt 文件,下一步 -> 选分隔符,再下一步选中 “ 空格其它 ” 确定(保存的 txt 文件导入 Excel 中),其中 Name 列为坐标点号, Description 列为打点时间,正常情况 Position 列为坐标点,得到了坐标点。然后用于坐标点成面图层。

weixin_55561616的博客 1861

1.#QNAN1.#IND1.#INF等“无效浮点数说明及其判断

在GIS视图上发现部分小区不能正常呈现,通过跟踪异常小区发现其所属基站的经纬度坐标都是-1.#QNAN00000000000无效值,导致小区绘制失败,这些小区均属新入网的3G基站,资源数据还没有维护起来,数据库中对应字段为空,经过TUXEDO接口后数据反映为QNAN无效值。在基础数据完善之前,可在SQL取数据时将空值转化为0,或在接收数据时对此类数据作进一步的过滤。   此处的1.#QNAN是一

PengPengBlog的博客 6604

NAN,IND,INF,DEN的概念

1)NAN - Not A Number。意思是不是一个数值。VS调试显示类似”1.#QNAN00000000000“。 产生原因:无意义的算术计算如负数开方。判断方法:包含float.h头文件,调用_isnan()。 2)IND - Indeterminate Number。意思是不确定数值。VS调试显示类似“1.#IND000000000000”。 是NAN的一种特殊情况。产生原因:0除

lemon的空间 7688

栅格数据的一些概念常用处理方法,ArcGIS栅格数据显示错误问题如何解决

栅格数据就是将空间分割成有规律的网格,每一个网格称为一个像元,并在各像元上赋予相应的属性值来表示实体的一种数据形式。空间数据库是对地理栅格数据进行有效管理的一个极为重要的手段。栅格数据的本质就是亮度值矩阵。

等待着冬天的风的博客 8135

浮点数计算常见错误1.#INF, 1.#IND#QNAN

编程时,可能会从您的代码中产生某些错误条件。如果编译器捕获任何编译错误,它将停止编译并告诉您错误所在位置。编译器还可能会对某些构造发出警告,这些构造可能会或可能不会在运行期间给您带来问题。 以下是您作为程序员在执行浮点算术(任何加法、减法、乘法除法)时应注意的一些浮点条件,即(QNAN SNAN)条件错误。 正数 负数 意义 1.#INF -1.#INF Infinity无穷大 1.#SNAN -1.#SNAN Signalling NaN .

novanova2009的博客 1万+

浮点数计算溢出处理问题、浮点数1.#INF1.#IND 问题

文章来自:http://www.cnblogs.com/aqxin/archive/2011/05/20/2052045.html 昨天遇到了一个关于浮点数计算溢出处理的问题,本来想用 if 语句把条件写好。 可是遇到了很多困难,上网搜了一下,发现一个解决办法: if 语句把条件写好可以,但是如果遇到幂函数pow(x,y)时,问题就不那么简单了。仔细分析将发现:

TTdave的专栏 2166

1.#IND 1.#INF nan inf 1.#QNAN SNaN 问题的解决

内容整理自网络 进行浮点数编程时,如果没有注意,常常会出现输出类似 1.#IND, 1.#INF 或者 nan, inf 之类奇怪的输出。这通常隐含了浮点数操作的异常。 特殊浮点数的含义 1.#INF / inf:这个值表示“无穷大 (infinity 的缩写)”,即超出了计算机可以表示的浮点数的最大范围(或者说超过了 double 类型的最大值)。例如,当用 0 除一个整数时便会得

求知若饥,知行合一 7160

IEEE754标准原文,及浮点数在线转换

原文外网链接 IEEE754.PDF (berkeley.edu)http://people.eecs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF 百度网盘分享链接 链接:https://pan.baidu.com/s/1KMaDNi04Q0ZzlNkxkONZ9w 提取码:1fwc 一些题外话: 我们常用的编程语言例如C#其采用的float也是采用此标准。 stm32的keil编程也是采用此标准。 有时候我们需要判断...

anlog的专栏 1万+

C++中的Not a number数据#INF, #NAN, #IND,

http://blogs.msdn.com/b/oldnewthing/archive/2013/02/21/10395734.aspx What does -1.#IND mean?: A survey of how the Visual C runtime library prints special floating point values RATE THIS

stereohomology 2329

1.#INF,-1.#IND,1.#INF000,-

原文地址:1.#INF,-1.#IND,1.#INF000,-1.#INF000作者:brightforever99  上文中说到的新发现,就是这篇文章的标题。以下是它们的含义: (11.#INF: 表示无穷小 (2)-1.#IND: 做除法时除数为0 (3)1.#INF000:正无穷大 (4)-1.#INF000:负无穷大

mxlmhgzw的专栏 2379

关于Arcgis这62个常用技巧,你知道几个?

小编推荐:ArcGIS类全领域教程推荐https://mp.weixin.qq.com/s?__biz=MzU0MDQ3MDk3NA==&mid=2247560279&idx=5&sn=8ac52cabeb8c7e3b2c083e07ef6056da&chksm=fb3b1786cc4c9e909bab16dd99e88e5f5f9816eb2349d6d73a68a137a5264aa606b2035d7b3e&token=1674760816&lang=zh_CN#rd一、计算面积 ( 可以帮我们计算

CCfz566的博客 1097

超实用!Arcgis62个常用技巧!

超实用!Arcgis62个常用技巧!

weixin_56135535的博客 1109

ArcGIS自定义脚本工具】批量根据矢量文件对应范围的矩形面要素

批量根据现有的要素(点、线、面)矢量文件(.shp)的范围生成扩大范围的矩形边界面要素文件(.shp)。扩大后面要素的坐标系与输入保持一致。输出矢量文件名格式(E_输入文件名.shp) 三、工具参数............

Salierib的博客 1983
上一篇: QT QDockWidget 重叠方法
下一篇: C/C++ #define的作用域问题
fly542
博客等级 码龄18年 150粉丝 81原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值