C double转char字符串

找个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; 
} 
发布了38 篇原创文章 · 获赞 23 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/u013662665/article/details/99709541
今日推荐