发新帖我要提问
123
返回列表
打印
[技术问答]

浮点转字符串的算法

[复制链接]
楼主: janewood
手机看帖
扫描二维码
随时随地手机跟帖
41
xander0751| | 2024-8-17 06:59 | 只看该作者 回帖奖励 |倒序浏览
void main()
{
    float value = 3.142;
   
    SendByte((value % 100)/10 + 48);        //输出十位
    SendByte(((uint8)value) % 10 + 48);     //输出个位
    SendByte(0x2E);                                  //输出小数点
    SendByte(((uint16)(value*10)) % 10 + 48);        //输出十分位
    SendByte(((uint16)(value*100)) % 10 + 48);      //输出百分位
    SendByte(((uint16)(value*1000)) % 10 + 48);    //输出千分位
}

void SendByte(uint8 c)              //以51单片机串口为例。根据接收数据的设备和通信方式自定义
{
        SBUF = c;
        while(!TI);                                        //等待数据发送完成
        TI = 0;
}

使用特权

评论回复
42
xander0751| | 2024-8-17 07:09 | 只看该作者
typedef unsigned char uint8;
typedef unsigned int uint16;

void main()
{
    float value = 3.142;
  
    SendByte(((uint8)value % 100)/10 + 48);                                //输出十位
    SendByte(((uint8)value) % 10 + 48);                                //输出个位
    SendByte(0x2E);                                                                //输出小数点
    SendByte(((uint16)(value*10)) % 10 + 48);        //输出十分位
    SendByte(((uint16)(value*100)) % 10 + 48);        //输出百分位
    SendByte(((uint16)(value*1000)) % 10 + 48);        //输出千分位
}

void SendByte(uint8 c)        //以51单片机为例。不同接收设备或通信方式可自定义
{
        SBUF = c;                                  //存入发送缓冲,移位寄存器将自动发送
        while(!TI);                                        //等待数据发送完成
        TI = 0;
}

使用特权

评论回复
43
xander0751| | 2024-8-17 07:10 | 只看该作者
typedef unsigned char uint8;
typedef unsigned int uint16;

void main()
{
    float value = 3.142;
  
    SendByte(((uint8)value % 100)/10 + 48);                                //输出十位
    SendByte(((uint8)value) % 10 + 48);                                //输出个位
    SendByte(0x2E);                                                                //输出小数点
    SendByte(((uint16)(value*10)) % 10 + 48);        //输出十分位
    SendByte(((uint16)(value*100)) % 10 + 48);        //输出百分位
    SendByte(((uint16)(value*1000)) % 10 + 48);        //输出千分位
}

void SendByte(uint8 c)        //以51单片机为例。不同接收设备或通信方式可自定义
{
        SBUF = c;                                  //存入发送缓冲,移位寄存器将自动发送
        while(!TI);                                        //等待数据发送完成
        TI = 0;
}

使用特权

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

本版积分规则