STM32 把浮点数转化为字符串 不用sprintf
时间: 2023-12-09 20:55:41 浏览: 141
STM32可以使用以下函数将浮点数转换为字符串:
```c
void ftoa(float n, char *res, int afterpoint)
{
int ipart = (int)n; // 整数部分
float fpart = n - (float)ipart; // 小数部分
// 把整数部分转换为字符串
int i = intToStr(ipart, res, 0);
// 添加小数点
if (afterpoint != 0) {
res[i] = '.';
fpart = fpart * pow(10, afterpoint);
intToStr((int)fpart, res + i + 1, afterpoint);
}
}
int intToStr(int x, char str[], int d)
{
int i = 0;
while (x) {
str[i++] = (x % 10) + '0';
x /= 10;
}
// 如果数字位数小于d,则在前面添加0
while (i < d)
str[i++] = '0';
// 反转字符串
reverse(str, i);
str[i] = '\0';
return i;
}
void reverse(char *str, int len)
{
int i = 0, j = len - 1, temp;
while (i < j) {
temp = str[i];
str[i] = str[j];
str[j] = temp;
i++;
j--;
}
}
```
使用示例:
```c
float f = 3.14159;
char str[10];
ftoa(f, str, 2); // 保留2位小数
```
这将把浮点数3.14159转换为字符串"3.14"。
阅读全文