C语言中特殊浮点数:-1.#IND00和NAN

前言

在C语言的浮点数:float,double中存在一类特别的数:-1.#IND。我们有时会看到它。比如:

float tmp =sqrt(-1);
此时tmp的值就是-1.#IND

IND其实就是Implementation Not define的意思,也就是说这个是未定义或者他不是一个数。
那么-1.#IND00是如何在内存中存储的呢?根据IEEE 745规定:

类别正负号实际指数有偏移指数指数域尾数域数值
NaN*1282551111 1111non zeroNaN

这类数的指数位为全1,尾数域不为0.

性质

若:a=-1.#IND00
a与任何浮点数(包括自身)的比较结果都为假,即 (a==a) 是 false的

应用

可以使用if(a!=a)为真来判断a是否为虚数。
例如:float a=sqrt(-1);
那么:(a!=a)为true
a==a为false

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值