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

【Z】1.#QNAN、1.#IND和1.#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 阅读详情

转自:http://blog.youkuaiyun.com/fly542/article/details/6576070

在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


转自:http://blog.youkuaiyun.com/fly542/article/details/6576070

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

相关推荐

Proteus 错误V=1,#QNAN乱码

至今为止不知道怎么解决,但是可以采用电压源来模仿LM1117的输入信号,然后避免这个发生。

464

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

转载: http://blog.163.com/shining317@126/blog/static/1846965220105191551388/ 在GIS视图上发现部分小区不能正常呈现,通过跟踪异常小区发现其所属基站的经纬度坐标都是-1.#QNAN00000000000无效值,导致小区绘制失败,这些小区均属新入网的3G基站,资源数据还没有维护起来,数据库中对应字段为空,经过TUXEDO接

MannHello的专栏 2545

OTA(Over-The-Air)升级

OTA(Over-the-Air)是一种通过无线方式进行数据传输和更新的技术,通常用于电子设备(如智能手机、汽车、物联网设备等)的软件、固件或配置更新。OTA可以在设备与服务器之间进行远程传输,用户无需将设备接入电脑或进行有线操作。通过OTA,用户只需要通过Wi-Fi或移动网络连接,便能自动接收并安装最新的更新,而无需手动干预。OTA的优点是便捷和高效,能够确保设备随时保持最新状态,同时减少用户的操作负担。:如智能家居设备、路由器、汽车等硬件设备的固件更新。:确保设备上的应用保持最新版本。

weixin_50127894的博客 5059

c语言1 qnan,什么是 1.#QNAN?

满意答案micktx_fx推荐于 2017.12.15采纳率:45%等级:12已帮助:5322人此处的1.#QNAN是一个打印呈现,QNAN是指Quiet Not a Number,类似的浮点错误还有SNaN(Signaling Not a Number),通常如0.0/0.0、给负数开平方根等溢出或无效运算就会产生一个NAN结果的表示值,NaN及两种浮点错误的说明如下:The value...

weixin_35779309的博客 5765

LabVIEW多设备采集实战:1个程序同时控制3个RS485 Modbus仪表

本文详细介绍了如何使用LabVIEW实现多设备RS485 Modbus同步采集,涵盖硬件架构设计、多线程通信框架搭建、数据帧解析技巧及性能优化策略。通过实际项目案例,展示如何解决端口冲突、数据解析错误等工业自动化常见问题,提升采集系统实时性与可靠性。

qsc901234的博客 298

Python_构建同花顺问财智能选股API服务

本文详细介绍了如何使用Python构建同花顺问财智能选股API服务,涵盖从环境准备、核心API开发到高级功能扩展的全过程。通过Flask框架和pywencai库,开发者可以快速搭建稳定可靠的选股接口,实现自动化股票筛选与交易系统集成,提升量化投资效率。

weixin_30596343的博客 328

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

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

novanova2009的博客 1万+

MinIO vs 华为云OBS:成本、性能与兼容性深度对比(含实测数据)

本文深度对比了开源对象存储MinIO与华为云OBS在成本、性能、兼容性及运维方面的核心差异。通过实测数据与全生命周期成本分析,为技术决策者提供选型依据。文章指出,MinIO在长期成本控制、性能深度优化及S3 API兼容性方面优势显著,而华为云OBS则提供开箱即用的便利性。

kmeans3miner的博客 593

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

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

TTdave的专栏 2172

GAMES104:02引擎架构分层-学习笔记

用户层工具层(Tool Layer):编辑器、工具界面功能层(Function Layer):渲染Rendering、动画Animation、物理Physics、相机Camera和实现游戏性的脚本Script、状态机FSM、AI等功能模块资源层(Resource Layer):各类图片、动画、音频资源加载核心层(Core Layer):核心功能如内存管理、容器分配、数据计算、多线程处理等平台层(Platform Layer):对接不同游戏平台、主机和硬件。

噗噗噗的博客 1267

EMD-LSTM时序预测 | MATLAB实现基于EMD-LSTM时间序列预测(EMD分解结合LSTM长短期记忆神经网络)

EMD-LSTM时序预测 | MATLAB实现基于EMD-LSTM时间序列预测(EMD分解结合LSTM长短期记忆神经网络)

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 654

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

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

求知若饥,知行合一 7167

【扣子AI开发】如何开发一个图像生成智能体?

【扣子AI开发】如何开发一个图像生成智能体,从创建到发布

tl437002770的博客 2427

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万+

『MaxKB 2.x 开发环境搭建』在Windows下运行最新源码的完整步骤

本文将详细介绍如何在Windows系统中完成MaxKB最新版(2.x)开发环境的搭建,包括前端、后端以及数据库的配置,确保开发者能够顺利启动项目。

老陈聊架构 584

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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 2331

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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的空间 7699

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

c语言出现-1. qnano,qnanopainter,实现OpenGL加速 Qt5 C++ UI组件的库,下载qnanopainter的源码_GitHub_开发99...

QNanoPainterQNanoPainter是面向Qt的OpenGL加速 C++ 矢量绘图库,提供最佳性能。生产率和渲染质量 all-in-one。 QNanoPainter是QPainter和 HTML5 Canvas API的混合。 换句话说,它非常接近于 HTML5 Canvas,但是使用独立的类转换为面向对象的C++。QNanoPainter可以与 Qt5 ui一起使用不同的方式:使用...

weixin_30578673的博客 1047

C++ -1.#QNAN0;-1.#QNAN0

原因:估计是数值溢出了。 解决 bool IsFloatValid(float f) { return((DWORD&)f&0x7f800000)!=0x7f800000; } 转载于:https://www.cnblogs.com/sharpfeng/archive/2011/03/31/2000545.html...

weixin_30307921的博客 2906

【C/C++】运算结果出现1.#Q0问题分析

打印代码结果时发现出现了1.#Q0,就在网上搜索,发现相关的中文资料介绍很少,在stackoverflow上找到了个提问(https://stackoverflow.com/questions/5939573/what-float-value-makes-sprintf-s-produce-1-qo),虽然不完全相同,但还是按照介绍逐步分析,排查其中的原因。char dispParams[100]...

AMG_GT的博客 3484
上一篇: C++宏定义详解,留着备用
静水若流深
博客等级 码龄14年 5粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值