Bonjour,
je voulais faire un programme qui convertit un nombre binaire donné en virgule fixe en un nombre décimal,donc j'ai essayé d'abord de déterminer la partie entière (pe) et la partie décimale (pad) mais l'ordinateur n'a pas exécuté les calculs correctement tel que pour un nombre binaire égal à 100,1 il calcule pe=100 et pad=0,09998
#include <stdio.h>
#include <math.h>
void main()
{
int i,j,pe,ped,reste;
float n,pad;
double decimal;
printf("donner un nombre binaire\t");
scanf("%f",&n);
i=0;
pe=-1;
pd=(float)0;
while(pe<i)
{
if((n-i)<1)
{
pe=(float)i;
pad=n-(float)i;
printf("%f, %d ",pad,pe);
}
else
i++;
}
i=0;
decimal=0;
while(pe>0)
{
reste=(int)pe%10;
decimal+=(double)(reste*pow(2,i));
pe=(int)pe/10;
i++;
}
j=1;
while(pad!=0)
{
pd*=(float)10;
printf("%f\t",pad);
i=0;
ped=-1;
/*ped représente la partie décimale de la partie décimale de n multiplié par 10*/
while(ped<i)
{
if((float)(pad-i)<(float)1)
{
ped=(int)i;
pad -=(float)i;
}
else
i++;
}
decimal+=(double)(ped*pow(2,-j));
j++;
}
printf("l'équivalent du nombre binaire donné est %e\t",decimal);
}
Configuration: Windows XP
Firefox 2.0.0.11