C语言 浮点数转字符串 不使用sprintf函数
时间: 2024-05-03 21:19:19 浏览: 154
要将浮点数转换为字符串,可以使用以下步骤:
1. 将整数部分和小数部分分别提取出来。
2. 将整数部分转换为字符串。
3. 如果小数部分不为0,则将小数部分转换为字符串,并将其添加到整数部分字符串后面。
4. 如果浮点数为负数,则在字符串前面添加负号。
下面是一个示例代码:
```c
#include <stdio.h>
void reverse(char *str, int len) {
int i = 0, j = len - 1;
while (i < j) {
char temp = str[i];
str[i] = str[j];
str[j] = temp;
i++;
j--;
}
}
void ftoa(float n, char *res, int afterpoint) {
int ipart = (int)n;
float fpart = n - (float)ipart;
int i = 0;
if (n < 0) {
res[i++] = '-';
ipart = -ipart;
fpart = -fpart;
}
// convert integer part to string
int j = 0;
while (ipart) {
res[j++] = ipart % 10 + '0';
ipart /= 10;
}
if (j == 0) {
res[j++] = '0';
}
reverse(res, j);
// add decimal point and convert fractional part to string
if (afterpoint != 0) {
res[j++] = '.';
for (i = 0; i < afterpoint; i++) {
fpart *= 10;
res[j++] = ((int)fpart % 10) + '0';
}
}
res[j] = '\0';
}
int main() {
float n = -123.456;
char res[100];
ftoa(n, res, 2);
printf("%s", res);
return 0;
}
```
这段代码将浮点数 -123.456 转换为字符串并打印输出。注意,这里的 `ftoa` 函数只能处理小数位数固定的情况,如果需要处理小数位数不确定的情况,需要稍作修改。
阅读全文