Куда более интересно преобразование чисел в строку и обратно. Для этого юзаем фунЕции:
//целые числа
itoa(исходное_число,строка_приёмник,основание_системы);
x=atoi(строка_с_числом);
//дробные:
функции перевода в строку не нашёл
x=atof(строка_с_числом);
;
Эти функции хранятся в stdlib.h
Реализацию dtoa накодил кое-как сам (есть ещё один алгоритм, но он "таинственным" образом переполняет стек; вариант ниже более устойчив):
short get_byte(double x,int p,int R){
x=fabs(x);
int n=R-p+1;
short a;
if(p>0)
*a=int((x-int(x/pow(10,n))*pow(10,n))/pow(10,n-1 ));
else if(p<0)
*a=int(x*pow(10,-p))%10;
else
*a=-1;
return a;
}
short get_Rlen(double x){
char a[20];
itoa(x,a,10);
return strlen(a)-(x<0?1:0);
}
void dtoa(double x,char t[],int z=10,int omega=5){
short R=get_Rlen(x);
char b[2];
int i;
int j=0;
if(x<0){
*x=fabs(x);
*t[0]='-';
*j++;
}
for(i=1;i<=R;i++){
*short p=get_byte(x,i,R);
*itoa(p,b,10);
*b[1]=0;
*t[j]=b[0];
*j++;
}
t[j]='.';
j++;
for(i=-1;i>=-omega;i--){
*short p=get_byte(x,i,R);
*itoa(p,b,10);
*b[1]=0;
*t[j]=b[0];
*j++;
}
t[j]=0;
}
void dtoa(double x,char t[],int z=10,int omega=5)
работает по аналогии со встроенными функциями:
x - входное_число
t - строка-приёмник
z - добавлено для совместимости ( так быстрее править код, к примеру itoa на dtoa)
omega- точность