浮点数转字符串 怎么转啊?
大家好!请教一个问题,我想电压值(比如11.5V)转为字符串,
然后用串口显示出来,
我的程序是
char str;
float data = 9.8;
sprintf(bhs,"%f",data);
for(;;)
{
Uart_Write(UART,1,str,3,100);
OSTimeDly(10000);
}
编译时,是好的,
可是最后串口出来是,0.0
这是为什么啊? bhs是什么? 哦哦
写错了
是str 还是不行哦
不知道,还有什么办法? vsprintf 4楼能不能具体说一下? 你的 sprintf 可能不支持 浮点。
一个容易的办法
计算整数部分和小数部分
sprintf(bhs,"%d.%d",........... char str = "9.8";
for(;;)
{
Uart_Write(UART,1,str,3,100);
OSTimeDly(10000);
} 谢谢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);
}
} mark
页:
[1]