打印
[STM32]

谁帮我计算个小数乘法,送50分

[复制链接]
727|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
c555|  楼主 | 2017-3-21 20:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  T1,  T2,  T3,  T4,这四个数都是char类型,这是读取AD得到的一个电压,如电压是2.531v,则T1值为0x02、T2值为0x05、T3值为0x03、T4值为0x01。
   为了和实际电压对应,现在需要将2.531*8.3, 计算完毕再转成char类型,以供显示。
   谁能帮我转换一下?我的C基础半路学的,好多没学到。先送50分作为答谢

相关帖子

沙发
yiilanying| | 2017-3-21 22:03 | 只看该作者
       char T1,T2,T3,T4;
             float a,b;
             a=(float)T1+((float)T2*0.1)+((float)T3*0.01)+((float)T4*0.001);
             b=a*8.3;
             T1=b%10;T2=(b*10)%10;T3=(b*100)%10;T4=(b*100)%10;

使用特权

评论回复
板凳
yiilanying| | 2017-3-21 22:05 | 只看该作者
yiilanying 发表于 2017-3-21 22:03
char T1,T2,T3,T4;
             float a,b;
             a=(float)T1+((float)T2*0.1)+((float)T3*0.01)+ ...

可能强制转换时 有问题,这就需要你自己调试了

使用特权

评论回复
地板
hgjinwei| | 2017-3-22 13:16 | 只看该作者
纯整数运算,需要注意是否会溢出(貌似T1也不足以让其溢出) 。

int vol_format(char rsb[],char T1,char T2,char T3,char T4)
{
    int     index;
    uint32  v;

    v = T1;
    v = (v * 10) + T2;
    v = (v * 10) + T3;
    v = (v * 10) + T4;

    index = 0;
    for(v *= 83; v > 0; v /= 10){
        rsb[index++] = (v % 10) + '0';
        if(4 == index){
            rsb[index++] = '.';
        }
    }
    if(index <= 4){
        while(index < 4){
            rsb[index++] = '0';
        }
        rsb[index++] = '.';
    }
    if(index <= 5){
        rsb[index++] = '0';
    }

    sm_memreverse(rsb,index);
    rsb[index] = '\0';
    return(index);
}

使用特权

评论回复
5
hgjinwei| | 2017-3-22 13:19 | 只看该作者
hgjinwei 发表于 2017-3-22 13:16
纯整数运算,需要注意是否会溢出(貌似T1也不足以让其溢出) 。

没考虑负数情况。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

264

主题

556

帖子

3

粉丝