对于不能使用printf直接打印浮点数据的可以借鉴
#include <stdio.h>
#include <string.h>
int device_printf_float_pn_data(int level,char *str_name,float data,int pn,char * str_unit)
{
char flag[2] = {0,0};
int data_i = 0;
if(strlen(str_name) > 20)
{
printf("str_name len more than 20 err\n");
return -1;
}
if(strlen(str_unit) > 20)
{
printf("str_unit len more than 20 err\n");
return -1;
}
if(data <(float)0.0)
{
data = (float)0.0- data;
flag[0] = '-';//符号
data_i= (int )data;
}
else
{
data_i= (int )data;
}
switch(pn)
{
case 5:
printf("%s = %s%d.%05d %s\n",str_name,flag,data_i,(int)((data-(float)data_i)*(float)100000.0+0.5),str_unit);
break;
case 4:
printf("%s = %s%d.%04d %s\n",str_name,flag,data_i,(int)((data-(float)data_i)*(float)10000.0+0.5),str_unit);
break;
case 3:
printf("%s = %s%d.%03d %s\n",str_name,flag,data_i,(int)((data-(float)data_i)*(float)1000.0+0.5),str_unit);
break;
case 2:
printf("%s = %s%d.%02d %s\n",str_name,flag,data_i,(int)((data-(float)data_i)*(float)100.0+0.5),str_unit);
break;
case 1:
printf("%s = %s%d.%01d %s\n",str_name,flag,data_i,(int)((data-(float)data_i)*(float)10.0+0.5),str_unit);
break;
case 6:
printf("%s = %s%d.%06d %s\n",str_name,flag,data_i,(int)((data-(float)data_i)*(float)1000000.0+0.5),str_unit);
break;
default:
break;
}
return 0;
}
int main()
{
/* Write C code in this online editor and run it. */
printf("Hello, World! \n");
device_printf_float_pn_data(1,(char *)"TEMP123456789",-20.5812345f,1,(char *)"C");
device_printf_float_pn_data(1,(char *)"TEMP123456789",-20.5812345f,2,(char *)"C");
device_printf_float_pn_data(1,(char *)"TEMP123456789",-20.5812345f,3,(char *)"C");
device_printf_float_pn_data(1,(char *)"TEMP123456789",-20.5812345f,4,(char *)"C");
device_printf_float_pn_data(1,(char *)"TEMP123456789",20.58f,5,(char *)"C");
device_printf_float_pn_data(1,(char *)"TEMP123456789",-20.5812646f,6,(char *)"C");
return 0;
}
Hello, World!
TEMP123456789 = -20.6 C
TEMP123456789 = -20.58 C
TEMP123456789 = -20.581 C
TEMP123456789 = -20.5812 C
TEMP123456789 = 20.58000 C
TEMP123456789 = -20.581265 C
本文介绍了一种在C语言中打印浮点数值的方法,通过`device_printf_float_pn_data`函数,根据精度要求(1到6位小数)进行格式化输出,包括负数的处理和单位的添加。
3765

被折叠的 条评论
为什么被折叠?



