找回密码
 立即注册
查看: 302|回复: 5

求一个float 转字符串的函数

[复制链接]
  • 打卡等级:常住居民III
  • 打卡总天数:166
  • 最近打卡:2025-04-30 13:36:04
已绑定手机

34

主题

171

回帖

1177

积分

金牌会员

积分
1177
发表于 2024-11-10 16:25:19 | 显示全部楼层 |阅读模式
求一个float 转字符串的函数,精确到小数点后2位 捕获3.PNG
8位程序---换个STC32G.h头文件,换个C251编译器就直接到STC32的高度了;
          想回到8位机,则换个STC8H.h头文件,换个C51编译器就回到8位机了.
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2024-11-10 16:30:46 | 显示全部楼层
可以使用sprintf函数,具体为:
定义一个数组 char str_tmp[10];
sprintf(str_tmp,"%.2f",Ufloat);//使用格式化字符串.2f进行控制,意思是小数点保留2位
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:166
  • 最近打卡:2025-04-30 13:36:04
已绑定手机

34

主题

171

回帖

1177

积分

金牌会员

积分
1177
发表于 2024-11-10 16:59:38 | 显示全部楼层
王*** 发表于 2024-11-10 16:30
可以使用sprintf函数,具体为:
定义一个数组 char str_tmp[10];
sprintf(str_tmp,"%.2f",Ufloat);//使用格 ...

谢谢你的回复,可以使用.麻烦看一下图片第3行有2个小数点,语法怎么改一下与上面的格式一致呢? 微信图片_20241110165703.jpg

点评

看起来像是你的显示数组缓存没有清空的问题? 留下了上一次显示的数据的一部分 或者请更加详细的描述你的问题,例如贴出实际的部分代码或者描述如何操作产生的这个现象?  详情 回复 发表于 2024-11-10 17:01
8位程序---换个STC32G.h头文件,换个C251编译器就直接到STC32的高度了;
          想回到8位机,则换个STC8H.h头文件,换个C51编译器就回到8位机了.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2024-11-10 17:01:16 | 显示全部楼层
lao4ji*** 发表于 2024-11-10 16:59
谢谢你的回复,可以使用.麻烦看一下图片第3行有2个小数点,语法怎么改一下与上面的格式一致呢?
...

看起来像是你的显示数组缓存没有清空的问题?
留下了上一次显示的数据的一部分
或者请更加详细的描述你的问题,例如贴出实际的部分代码或者描述如何操作产生的这个现象?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:166
  • 最近打卡:2025-04-30 13:36:04
已绑定手机

34

主题

171

回帖

1177

积分

金牌会员

积分
1177
发表于 2024-11-10 17:19:19 | 显示全部楼层
王*** 发表于 2024-11-10 17:01
看起来像是你的显示数组缓存没有清空的问题?
留下了上一次显示的数据的一部分
或者请更加详细的描述你的 ...

谢谢你的提示,是数据刷新了没有清屏,现在已经可以了
8位程序---换个STC32G.h头文件,换个C251编译器就直接到STC32的高度了;
          想回到8位机,则换个STC8H.h头文件,换个C51编译器就回到8位机了.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:177
  • 最近打卡:2025-04-30 13:52:43

10

主题

134

回帖

993

积分

高级会员

积分
993
发表于 2024-11-10 22:56:37 | 显示全部楼层

  1. char* float_to_str(float num, char* buffer, int precision) {
  2.     if (num < 0) {
  3.         *buffer++ = '-';
  4.         num = -num;
  5.     }
  6.    
  7.     // 处理整数部分
  8.     int integer = (int)num;
  9.     float decimal = num - integer;
  10.    
  11.     // 转换整数部分
  12.     char* p = buffer;
  13.     if (integer == 0) {
  14.         *p++ = '0';
  15.     } else {
  16.         char temp[16];
  17.         int i = 0;
  18.         while (integer) {
  19.             temp[i++] = integer % 10 + '0';
  20.             integer /= 10;
  21.         }
  22.         while (i > 0) {
  23.             *p++ = temp[--i];
  24.         }
  25.     }
  26.    
  27.     // 处理小数部分
  28.     if (precision > 0) {
  29.         *p++ = '.';
  30.         while (precision--) {
  31.             decimal *= 10;
  32.             int digit = (int)decimal;
  33.             *p++ = digit + '0';
  34.             decimal -= digit;
  35.         }
  36.     }
  37.    
  38.     *p = '\0';
  39.     return buffer;
  40. }
复制代码
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:42 , Processed in 0.161552 second(s), 85 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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