1. 程式人生 > >順序表示的串——順序串3——將浮點型別轉換為對應的字串

順序表示的串——順序串3——將浮點型別轉換為對應的字串

將函式void ftoa(double f, char[])中的浮點數f轉換為相應的字串,存放在s中。其中,最多保留4位小數。例如1234.67轉換為“1234.67”,-56.789867轉換為“-56.7898”

【分析】
該題是北京航空航天大學的考研題。在將浮點數轉換為相應的字元時可分為兩個部分進行轉換:先將浮點數的整數部分轉換為字串,然後將浮點數的小數部分轉換為字串。轉換時需要取出浮點數中的每一位數字,然後加上48就轉換為字元了。

main.cpp

#include <iostream>
using namespace std;
#define MAX 100
void ftoa(float f,char s[]);
void main()
{
	double f;
	char s[MAX];
	cout << "請輸入一個浮點數:" << endl;
	cin >> f;
	ftoa(f, s);
	cout << "轉換後的字串為:" <<s << endl;

	system("pause");
}
void ftoa(float f, char s[])
{
	int i, j, len, t, n;
	double sign;
	if ((sign=f)<0)
	{
		f = -f;
	}
	n = int(f);
	i = 0;
	do 
	{
		s[i++] = n % 10 + 48;
	} while (n/=10);
	if (sign<0)
	{
		s[i++] = '-';
	}
	len = i;
	for (i = 0,j = len - 1; i < len / 2;i++,j--)
	{
		t = s[i];
		s[i] = s[j];
		s[j] = t;
	}

	f -= (int)f;
	s[len++] = '.';
	for (i = 0; i < 4;i++)
	{
		f *= 10;
		s[len++] = ((int)f) % 10 + 48;
	}

	while (s[len-1]=='0')
	{
		len--;
		
	}
	s[len] = '\0';
}

結果: