C语言中INF和NAN是什么意思

作者&投稿:寿茜 (若有异议请与网页底部的电邮联系)
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是否为一个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。(有些较早的编译器版本中,无论是正无穷还是负无穷,都返回非零值,不区分正负无穷)。

NaN 的意思是 “Not a Number”, 不是一个数值,或无法表示的数值,例如溢出了, 负数求对数了,分母为0了。
用户可以加入一些打印语句,检查数据是否有错。
再有 A/a 这种运算是整除运算,不能算做是浮点运算。

扩展资料:
C语言函数
C语言log()函数:返回x的自然对数(以e为底的对数)
C语言ldiv()函数:求两个数的商和余数(针对long类型)
C语言ceil()函数:求不小于x的最小整数(向上取整)
C语言floor()函数:求不大于x的最大整数(向下取整)
int iscntrl(int ch) 若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F)
double cabs(struct complex znum) 返回复数znum的绝对值
参考资料来源:百度百科-c语言
参考资料来源:百度百科-C语言函数

  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语言的头文件<float.h>中,有定义的常量DBL_MAX,这个常量表示“能表示出来的最大的双精度浮点型数值”。<float.h>中还有常量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<math.h>

  宏的用法(类似于函数原型):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。(有些较早的编译器版本中,无论是正无穷还是负无穷,都返回非零值,不区分正负无穷)。

INF表示“无穷大”,是infinite的缩写。
NAN表示“无效数字”,是Not a number的缩写。

INF表示“无穷大”,是infinite的缩写。
NAN表示“无效数字”,是Not a number的缩写。

C语言当中的nan表示not a number,等同于 #IND:indeterminate (windows)
自定义函数: int isNumber(double d){return (d==d);}来判断d是否为nan,若d是nan则返回0,否则返回非零值。
C语言当中的inf表示infinity (linux),等同于 #INF:infinity (windows)
自定义函数:int isFiniteNumber(double d) {return (d<=DBL_MAX&&d>=-DBL_MAX);}来判断d是否为一个finite数(既不是inf,又不是nan(加入d为nan,则d参加比较就会得到false(0)值))。
库函数方法判定inf和nan:
下面这几个宏(用宏实现的,使用时跟函数的形式基本相同)是判断一个表达式的结果是否为inf、nan或其他:
头文件:include<math.h>
宏的用法(类似于函数原型):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。(有些较早的编译器版本中,无论是正无穷还是负无穷,都返回非零值,不区分正负无穷)。


关于红警的RULES.INI的问题~~~
SovParaDropInf=E2 ;(苏军占有科技机场空投步兵类型) SovParaDropNum=9 ;(苏军占有科技机场空投步兵数量) 可以把E1和E2改成COW(母牛)如:AmerParaDropInf...[GATECH]盟军作战实验室 [NATECH]苏军作战实验室 [GAWEAP]盟军战车工厂 [NAWEAP]苏军战车工厂 [GAREFN]盟军矿厂 [NAREFN]苏军矿厂 [GAOREP]矿石精炼...

怎么改红警上的钱呀?方法要简单
AmerParaDropInf=E1 ;(美国空投步兵类型)AmerParaDropNum=8 ;(美国空投伞兵数量)AllyParaDropInf=E1...Prerequisite=NAHAND,RADAR ;【必须在此基础上制造】Crushable=no ;【不能被碾压】Strength=130 ;【

红警的规则文件修改问题
AmerParaDropInf=E1 ;(空投步兵类型) AmerParaDropNum=8 ;(空投步兵数量) AllyParaDropInf=E1 ;(...(需注意的是:CTNK和BLACKBIRD等所有的AI的部队代码都是那些部队在Rules INI中的代码而 不是名字,...Prerequisite=NAYARD Strength=300 Primary=Sapper Naval=yes Category=Support Armor=light TechLevel=2...

红警2rules代码修改
(盟军占有科技机场空投步兵类型) AllyParaDropNum=6 ;(盟军占有科技机场空投步兵数量) SovParaDropInf=E2 ;(苏军占有科技机场空投步兵类型) SovParaDropNum=9 ;(苏军占有科技机场空投步兵数量)。可以把 E1 和 E2 改成 COW(母牛)如:AmerParaDropInf=COW 你就会看到美国空投母牛 了。E1 是美国大兵...

红警尤里的复仇rulesmd.ini怎么改光凌的攻击和移动速度?
AmerParaDropInf=E1 ;(美国空投步兵类型)AmerParaDropNum=8 ;(美国空投步兵数量)AllyParaDropInf=E1 ;(盟军占有科技机场空投步兵类型)AllyParaDropNum=6 ;(盟军占有科技机场空投步兵数量)SovParaDropInf=E2 ;(苏军占有科技机场空投步兵类型)SovParaDropNum=9 ;(苏军占有科技机场空投步兵数量)可以把E1和...

弘讯电脑温度都显示970的故障原因
在CMOS设置的电源管理栏有一项modem use IRQ项目,他的选项分别为3、4、5...、NA,一般它的默认选项...笔者在这里泄露一个独门密招:进入Win9xinfother目录,把关于声卡的*.inf文件统统删掉再重新启动后用...时,选择“否”,而后从列表中选取“声音、视频和游戏控制器”用驱动盘或直接选择声卡类型进行安装。

电脑密码
该软件包含在PasswareKit5.0中,用于恢复系统管理员的密码,运行后生成3个文件:txtsetup.oem.winkey.sys和winkey.inf,3个文件一共才50KB,短小精悍。把这3个文件放到任何软盘中,然后使用XP安装光盘启动电脑,启动过程中按F6键让系统安装第三方的驱动程序。此时,正是我们切入的最好时机,放人该软盘就会自动跳到Windows...

历史上有哪些著名黑客病毒灾难?
“熊猫烧香”感染系统的*.exe、*.com、*.pif、*.src、*.html、*.asp文件,导致用户一打开这些网页文件,IE自动连接到指定病毒网址中下载病毒。在硬盘各分区下生成文件autorun.inf和setup.exe.病毒还可通过U盘和移动硬盘等进行传播,并且利用Windows系统的自动播放功能来运行。 “熊猫烧香”还可以修改注册表启动项,被...

红警的MOD怎样改?
AmerParaDropInf=E1 ;(美国空投步兵类型)AmerParaDropNum=8 ;(美国空投伞兵数量)AllyParaDropInf=E1...Prerequisite=NAHAND,RADAR ;【必须在此基础上制造】Crushable=no ;【不能被碾压】Strength=130 ;【

请各位老兄,谁有网页中播放视频功能的asp代码
把这个网址http:\/\/wmt2.about...\/\/activex.microsoft.com\/activex\/controls\/mplayer\/en\/nsmp2inf.cab#Version=5,1,52,701standby=Loading Microsoft? Windows Media? Player components... type=application

克山县19263881400: c语言中mincost=INF是什么意思 -
达奚悦盐酸: 在一些情况会出现无效的浮点数,例如除0,例如负数求平方根等,像这类情况,获取到的浮点数的值是无效的.我们常常用NaN或INF表示,其中:NaN 即 Not a Number 非数字 INF 即 Infinite 无穷大

克山县19263881400: c语言中输出 - nan是什么意思 -
达奚悦盐酸: 超出类型表示的范围似乎会答应nan机器表示不了的也会输出nan

克山县19263881400: c语言中输出1.#jhbhb表示什么意思 -
达奚悦盐酸: 应当是表示 浮点数 溢出 (浮点数操作的异常) -- 数值超界 或 非法运算.IEEE表示法与你的有点不同:1.#INF / inf:这个值表示“无穷大 (infinity 的缩写)”,即超出了计算机可以表示的浮点数的最大范围(或者说超过了 double 类型的最大值...

克山县19263881400: C语言中nan()函数怎么用? -
达奚悦盐酸: double nan(const char *tagp); 如果不支持,返回0.0;支持则返回以double类型表示的数值 用来判断一个字符串是否为数字(Not a Number的缩写)

克山县19263881400: /n在c语言中是什么意思?
达奚悦盐酸: 在c语言中,“/n”没有特别的意思,就是一个斜杠加字符n,总共两个字符.“\n”是转义字符,表示换行.一个字符.c语言中:“/n”没有特别的意思,就是一个斜杠加...

克山县19263881400: C语言中\\\\n是什么意思 -
达奚悦盐酸: "\\\\n" 就是 '\\','\\','n' 三个字符 '\\'就是字符 \ printf("\\\\n"); 会输出 \\n

克山县19263881400: C语言:输出结果为 - NAN是什么意思? -
达奚悦盐酸: not a number 不是一个数!

克山县19263881400: c语言中f*和n/指的是什么? -
达奚悦盐酸: *的使用有以下几种: 1)声明指针时; 2)对一个指针指向的位置取值时; 但不知道你说的f*是什么意思.你对照着原代码看看那行代码是做什么的. \n在输入输出中是换行,\是转义符.

克山县19263881400: C语言中 main(int n)是什么情况啊!n有什么含义 -
达奚悦盐酸: main(int n,char**)是main函数的完整表示,可以说是完整的表示方式,平时我们一般用main()来表示.其中n代表位置变量的个数,char**代表未知变量存放的地址.

克山县19263881400: 一个C语言简单问题——int fun(int n)是什么意思 -
达奚悦盐酸: int fun(int n)规定了函数的两个要素: 1、函数的返回值类型是整型; 2、函数有一个整型的参数,也就是说在函数调用时必须要给它一个整型数作为参数. fun()函数内部的C+=fun(i-2)实际上表明这个函数采用了递归型算法. 递归做为一种算...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网