c检查给定的值是否为非数字

113 阅读1分钟

目的-检查是否为数字

在一些工作中,经常需要判断数据是否为数值,这一步很关键,如果不检查,直接进行计算,程序就直接报错了。 比如检查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还是非常强大和灵活的