lao4jiadian 发表于 2024-11-10 16:25:19

求一个float 转字符串的函数

求一个float 转字符串的函数,精确到小数点后2位

王昱顺 发表于 2024-11-10 16:30:46

可以使用sprintf函数,具体为:
定义一个数组 char str_tmp;
sprintf(str_tmp,"%.2f",Ufloat);//使用格式化字符串.2f进行控制,意思是小数点保留2位

lao4jiadian 发表于 2024-11-10 16:59:38

王昱顺 发表于 2024-11-10 16:30
可以使用sprintf函数,具体为:
定义一个数组 char str_tmp;
sprintf(str_tmp,"%.2f",Ufloat);//使用格 ...

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

王昱顺 发表于 2024-11-10 17:01:16

lao4jiadian 发表于 2024-11-10 16:59
谢谢你的回复,可以使用.麻烦看一下图片第3行有2个小数点,语法怎么改一下与上面的格式一致呢?
...

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

lao4jiadian 发表于 2024-11-10 17:19:19

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

谢谢你的提示,是数据刷新了没有清屏,现在已经可以了

远行的鹿 发表于 2024-11-10 22:56:37


char* float_to_str(float num, char* buffer, int precision) {
    if (num < 0) {
      *buffer++ = '-';
      num = -num;
    }
   
    // 处理整数部分
    int integer = (int)num;
    float decimal = num - integer;
   
    // 转换整数部分
    char* p = buffer;
    if (integer == 0) {
      *p++ = '0';
    } else {
      char temp;
      int i = 0;
      while (integer) {
            temp = integer % 10 + '0';
            integer /= 10;
      }
      while (i > 0) {
            *p++ = temp[--i];
      }
    }
   
    // 处理小数部分
    if (precision > 0) {
      *p++ = '.';
      while (precision--) {
            decimal *= 10;
            int digit = (int)decimal;
            *p++ = digit + '0';
            decimal -= digit;
      }
    }
   
    *p = '\0';
    return buffer;
}
页: [1]
查看完整版本: 求一个float 转字符串的函数