c语⾔输出inf是什么意思,cuffdiff输出⽂件中的inf和nan的意思cuffdiff 输出⽂件(gene_exp.diff)中有的log2(FPKMy/FPKMx)值为inf或者-inf,有的test stat值为nan或-nan,他们的意思其实是来源于C 语⾔。其中:
INF表⽰“⽆穷⼤”,是infinite的缩写。
NAN表⽰“⽆效数字”,是Not a number的缩写。
下⾯是C语⾔中INF和NAN的介绍
inf :infinity (linux) 等同于 #INF:infinity  (windows)
nan :not a number 等同于  #IND:indeterminate (windows)
注意:
1、inf⼀般是因为得到的数值,超出浮点数的表⽰范围(溢出,即阶码部分超过其能表⽰的最⼤值);⽽nan⼀般是因为对浮点数进⾏了未定义的操作,如对-1开⽅。
2、nan==nan
结果是0或false,即不能和nan进⾏⽐较,和nan进⾏⽐较得到的结果总是false或0。所以可以⽤函数: int
isNumber(double d){return (d==d);}来判断d是否为nan,若d是nan则返回0,否则返回⾮零值。
3、1.0/0.0等于inf,-1.0/0.0等于-inf,0.0+inf=inf;
4、对负数开⽅sqrt(-1.0)、对负数求对数(log(-1.0))、0.0/0.0、0.0*inf、inf/inf、inf-inf这些操作都会得到nan。(0/0会产⽣操作异常;0.0/0.0不会产⽣操作异常,⽽是会得到nan)
5、得到inf时就查看是否有溢出或者除以0,得到nan时就查看是否有⾮法操作。
6、C语⾔的头⽂件中,有定义的常量DBL_MAX,这个常量表⽰“能表⽰出来的最⼤的双精度浮点型数值”。中还有常量
DBL_MIN,DBL_MIN表⽰可以⽤规格化表⽰的最⼩的正浮点数,但DBL_MIN并不是最⼩的正浮点数,因为可以⽤可以⽤⾮规格化浮点数表⽰的更⼩。可以⽤函数:int isFiniteNumber(double d){return (d<=DBL_MAX&&d>=-DBL_MAX);}来判断d是否为⼀个finite数(既不是inf,⼜不是nan(加⼊d为nan,则d参加⽐较就会得到false(0)值))。
7、1.0/inf等于0.0。
8、inf是可以与其他浮点数进⾏⽐较的,即可以参与<=、>+、==、!=等运算。
下⾯这⼏个宏(⽤宏实现的,使⽤时跟函数的形式基本相同)是判断⼀个表达式的结果是否为inf、nan或其他:
头⽂件:include
宏的⽤法(类似于函数原型):int fpclassify(x);
int
isfinite(x);
int
isnormal(x);
int isnan(x);
int isinf(x);
具体⽤法:
1、int
fpclassify(x)
⽤来查看浮点数x的情况,fpclassify可以⽤任何浮点数表达式作为参数,fpclassify的返回值有以下⼏种情况。
FP_NAN:x是⼀个“not a number”。
FP_INFINITE: x是正、负⽆穷。
FP_ZERO: x是0。
FP_SUBNORMAL: x太⼩,以⾄于不能⽤浮点数的规格化形式表⽰。
FP_NORMAL: x是⼀个正常的浮点数(不是以上结果中的任何⼀种)。
2、int
isfinite(x)浮点数的基数什么意思
当(fpclassify(x)!=FP_NAN&&fpclassify(x)!=FP_INFINITE)时,此宏得到⼀个⾮零值。
3、int
isnormal(x) 当(fpclassify(x)==FP_NORMAL)时,此宏得到⼀个⾮零值。
4、int
isnan(x) 当(fpclassify(x)==FP_NAN)时,此宏返回⼀个⾮零值。
5、int
isinf(x) 当x是正⽆穷是返回1,当x是负⽆穷时返回-1。(有些较早的编译器版本中,⽆论是正⽆穷还是负⽆穷,都返回⾮零值,不区分正负⽆穷)。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。