找个double转char字符串的代码,国内搜出来的都是些什么狗屎
翻墙出去,一搜就有几种不错的方法
方法1:使用sprintf
https://cboard.cprogramming.com/c-programming/38507-double-string-conversion.html
double d = 123456.1234567899;
char s[50];
sprintf(s,"%f", d);
printf("%s\n", s);
sprintf(s,"%.10f", d);
printf("%s\n", s);
sprintf(s,"%.2f", d);
printf("%s\n", s);
方法2:自己写
https://www.geeksforgeeks.org/convert-floating-point-number-string/
// C program for implementation of ftoa()
#include<stdio.h>
#include<math.h>
// reverses a string 'str' of length 'len'
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--;
}
}
// Converts a given integer x to string str[]. d is the number
// of digits required in output. If d is more than the number
// of digits in x, then 0s are added at the beginning.
int intToStr(int x, char str[], int d)
{
int i = 0;
while (x)
{
str[i++] = (x%10) + '0';
x = x/10;
}
// If number of digits required is more, then
// add 0s at the beginning
while (i < d)
str[i++] = '0';
reverse(str, i);
str[i] = '\0';
return i;
}
// Converts a floating point number to string.
void ftoa(float n, char *res, int afterpoint)
{
// Extract integer part
int ipart = (int)n;
// Extract floating part
float fpart = n - (float)ipart;
// convert integer part to string
int i = intToStr(ipart, res, 0);
// check for display option after point
if (afterpoint != 0)
{
res[i] = '.'; // add dot
// Get the value of fraction part upto given no.
// of points after dot. The third parameter is needed
// to handle cases like 233.007
fpart = fpart * pow(10, afterpoint);
intToStr((int)fpart, res + i + 1, afterpoint);
}
}
// driver program to test above funtion
int main()
{
char res[20];
float n = 233.007;
ftoa(n, res, 4);
printf("\n\"%s\"\n", res);
return 0;
}