kekele 发表于 2011-1-13 10:02:57

浮点数转字符串 怎么转啊?

大家好!请教一个问题,
我想电压值(比如11.5V)转为字符串,
然后用串口显示出来,
我的程序是
char str;
float data = 9.8;
sprintf(bhs,"%f",data);
for(;;)
{
      Uart_Write(UART,1,str,3,100);
      OSTimeDly(10000);
}
编译时,是好的,
可是最后串口出来是,0.0
这是为什么啊?

skyhu 发表于 2011-1-13 10:11:28

bhs是什么?

kekele 发表于 2011-1-13 10:17:10

哦哦
写错了
是str

kekele 发表于 2011-1-13 10:17:54

还是不行哦
不知道,还有什么办法?

hy317 发表于 2011-1-13 10:20:08

vsprintf

kekele 发表于 2011-1-13 10:21:25

4楼能不能具体说一下?

luzhengmao 发表于 2011-1-13 11:27:13

你的 sprintf 可能不支持 浮点。

一个容易的办法

计算整数部分和小数部分


sprintf(bhs,"%d.%d",...........

snoopyzz 发表于 2011-1-13 11:59:13

char str = "9.8";

for(;;)
{
      Uart_Write(UART,1,str,3,100);
      OSTimeDly(10000);
}

kekele 发表于 2011-1-13 21:44:49

谢谢6楼!
我按照你的思路写了程序,
因为我的电压值整数只有2位,小数只有一位
所以比较简单,具体的程序如下:
INT8U voltage_value; //存放电压值

INT8U myinttoascii(INT8U data)//int--->ASCII
{
if (data<10)
    return (data+'0');
else
    return (data+55);
}
void myfloattoascii(INT8U *str,float data)//浮点数转字符串,只限于2位整数和1位小数
{
INT8U bai,shi,ge;
   data = data*10;
   bai= (INT8U)data/100;
   shi= (INT8U)data/10%10;
   ge   = (INT8U)data%10;
   str=myinttoascii(bai);
   str=myinttoascii(shi);
   str='.';
   str=myinttoascii(ge);
}
void Task1(void)
{
    float voltage_data;
    voltage_data = voltagedata();//真正的电压值,float型
    myfloattoascii(voltage_value,voltage_data);

   for(;;)
    {
      Uart_Write(UART,1,str,4,100);
      OSTimeDly(10000);
    }
}

muzheyun 发表于 2011-2-10 16:21:45

mark
页: [1]
查看完整版本: 浮点数转字符串 怎么转啊?