目的-检查是否为数字
在一些工作中,经常需要判断数据是否为数值,这一步很关键,如果不检查,直接进行计算,程序就直接报错了。 比如检查float a,检查a是否为数值,这种情况在modbus_rtu获取寄存器的值当中,经常用到,平常应用编程的时候,用的挺少。 总之,解决的问题就是判断一个数值是否为数字,比如float a,a是数值吗?
官网说明:
isnan()函数是math标准的库函数,用于检查给定的值是否为NaN(非数字)。 它接受一个值( float , double或long double ),如果给定值为NaN,则返回1;否则,返回1。 0,否则。
实例说明
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #include <math.h>
5 int main()
6 {
7 float a = 0;
8 memset(&a, 0xFF, sizeof(float));
9 printf("a=%f\r\n", a);
10 if(isnan(a))
11 {
12 printf("a不是数字\r\n");
13 }
14 a = 3.2;
15 printf("a=%f\r\n", a);
16 if(!isnan(a))
17 {
18 printf("a是数字\r\n");
19 }
20 }
执行情况:
root@mkx:~/learn/notnum# ./notnum
a=-nan
a不是数字
a=3.200000
a是数字
root@mkx:~/learn/notnum#
这个函数isnan还是非常强大和灵活的