Convertir un nombre Décimal en Fraction

Je suis en train de convertir un nombre décimal en sa fraction. Les nombres décimaux sera d'avoir un maximum de 4 chiffres après la virgule.
exemple:- 12.34 = 1234/100
12.3456 = 123456/10000

mon code :-

#include <stdio.h>
int main(void) {
  double a=12.34;
  int c=10000;
  double b=(a-floor(a))*c;
  int d=(int)floor(a)*c+(int)b; 
  while(1) {
     if(d%10==0) {
    d=d/10;
    c=c/10;
 }
 else break;
  }
  printf("%d/%d",d,c);
 return 0;
}

mais je n'obtiens pas de résultat correct, les nombres Décimaux sera de double précision seulement.Merci de me guider ce que je dois faire.

  • Ne pas utiliser de virgule flottante à tous, et utiliser à la place de la virgule fixe entiers, c'est à dire faire de votre unité de 1/10000.
  • int d = (int)round(a * c); serait un bon point de départ. Si vous utilisez uniquement floor et de troncature, des choses comme 12.34 = 12.339999999999999857891452847979962825775146484375 peut vous passionner dur. Mais je suis d'accord avec Kerrek, vous devez utiliser des entiers depuis le début, pour que.
  • l'Une de mes questions a été marqué comme un doublon de celui-ci, même si c'est à propos de JavaScript, et pas C. :/
InformationsquelleAutor alankrita | 2012-11-13