硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5642|回复: 1
收起左侧

[有问必答] stm32 float类型数据加法问题

[复制链接]

3

主题

7

回帖

16

积分

新手上路

积分
16
发表于 2015-4-22 11:02:38 | 显示全部楼层 |阅读模式
void print(float num)
{
    u8 tmp[2];
    u8 i = 0;
    u16 s = 0;
//    float s = 0;
//    sprintf(tmp,"%06.2f",num);
//    s = atof(tmp);
    s = (u16)(num*100);
    tmp[0] = s>>8&0xff;
    tmp[1] = s&0xff;
    for(i=0;i<2;i++)
    {
        
        while(USART_GetFlagStatus(USART2 , USART_FLAG_TC) != SET)
        {
        }
       USART_SendData(USART2,tmp);   
    }
}

void SendTemperature(float* Max1,float* Min1,u8 location)
{
    u8 i = 0;
    u8 tmp[2];
    location -= 0x30;

    if(location>=1&&location<=8)
    {
         print(Max1[location-1]);
         print(Min1[location-1]);
         print((Max1[location-1]+Min1[location-1]));

        tmp[0] = (u16)(Max1[location-1]*100)>>8 &0xff;
        tmp[1] = (u16)(Max1[location-1]*100)&0xff;
        for(i=0;i<2;i++)
        {
                printf("%X",tmp);   
        }
        tmp[0] = (u16)(Min1[location-1]*100)>>8&0xff;
        tmp[1] = (u16)(Min1[location-1]*100)&0xff;
        for(i=0;i<2;i++)
        {
                printf("%X",tmp);   
        }
        tmp[0] = (u16)((Max1[location-1]+Min1[location-1])*100)>>8&0xff;
        tmp[1] = (u16)((Max1[location-1]+Min1[location-1])*100)&0xff;
        for(i=0;i<2;i++)
        {
                printf("%X",tmp);   
        }
        printf("\r\n");
        
    }
}

Max1,Min1都是两位小数的float类型的数据,如90.12,但是求和就会少0.01.求大神支招。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107122
QQ
发表于 2015-4-22 21:36:44 | 显示全部楼层
建议先不用你的这个函数,直接用浮点数累加算算,算一天,看看有错误没有,排查下是哪里的问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-18 23:07 , Processed in 0.149490 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表