字符串的话 ftoa不就行了,sprintf也可以取巧
什么都不用只能写自己的ftoa()找了个网上实现给楼主,实现得还挺好玩的,呵呵
#include
#include
#include
const double eps = 1e-12;
char s[30];
void reverse(char *s)
{
int i , j;
int len = strlen(s);
for( i = 0 , j = len - 1 ; i
s[i]^=s[j]^=s[i]^=s[j];
}
/* ftoa: convert double n to string s with digits*/
void ftoa(char *s, double n, int digits)
{
memset(s , 0 , sizeof(s));
int i = 0 , p;
bool sign = true;
if( n
{
sign = false;
n = -n;
}
long long t = (long long)n;
n = n - t;
if( t == 0)
{
s[i++] = '0';
}
else
{
while( t != 0 )
{
p = t % 10;
t /= 10;
s[i++] = p + '0';
}
if(!sign) s[i++] = '-';
reverse(s);
}
if( fabs( n - 0.0 ) > eps )
{
s[i++] = '.';
int cur_d = 0;
while( cur_d
{
cur_d++;
n *= 10.0;
p = (long long)n;
n = n - p;
s[i++] = p + '0';
}
}
s[i] = '\0';
}
int main()
{
double n;
while(scanf("%lf" , &n) != EOF )
{
printf("pre %lf\n" , n);
ftoa(s, n , 7);
printf("post %s\n" , s);
}
}