打印浮点数值

本文介绍了一种在C语言中打印浮点数值的方法,通过`device_printf_float_pn_data`函数,根据精度要求(1到6位小数)进行格式化输出,包括负数的处理和单位的添加。

对于不能使用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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dashan_na

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值