Programme qui convertit un nombre binaire
fifi
-
fifi -
fifi -
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);
}
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);
}
A voir également:
- Programme qui convertit un nombre binaire
- Binaire - Guide
- Programme demarrage windows - Guide
- Nombre de jours entre deux dates excel - Guide
- Comment fermer un programme qui ne répond pas - Guide
- Mettre en veille un programme - Guide
2 réponses
Bienvenue dans le monde merveilleux du Double, qui est incapable d'une représentation correcte et fiable de beaucoup de nombres pourtant simples... C'est comme ça que les premières versions des calculatrices Windows donnaient 100,1 - 100 = 0 !
D'ailleurs, tu ne verras jamais de type double dans un programme utilisé par des banques...
Je ne sais pas si le type decimal existe en C, mais en C# il est fiable.
D'ailleurs, tu ne verras jamais de type double dans un programme utilisé par des banques...
Je ne sais pas si le type decimal existe en C, mais en C# il est fiable.