2009-02-18 9 views
2

J'ai besoin de convertir les valeurs décimales en leurs équivalents fractionnaires, similaires à previous question. J'utilise le code affiché dans l'une des réponses comme point de départ, car il fait principalement ce que j'ai besoin de faire.Format Répétition de la décimale en tant que fraction

string ToMixedFraction(decimal x) { 
int whole = (int) x; 
int denominator = 64; 
int numerator = (int)((x - whole) * denominator); 

if (numerator == 0) 
{ 
    return whole.ToString(); 
} 
while (numerator % 2 == 0) // simplify fraction 
{ 
    numerator /= 2; 
    denominator /=2; 
} 
return string.Format("{0} {1}/{2}", whole, numerator, denominator); 
} 

Comme je l'ai dit, ce code fonctionne très bien pour la plupart, mais je dois prendre des valeurs décimales répétitives communes (.3333333) et l'afficher à l'utilisateur comme un tiers.

Est-ce que quelqu'un sait comment cela pourrait être possible?

Répondre

4

De http://mathforum.org/library/drmath/view/61579.html

Prenez le nombre de chiffres dans la partie en répétant que le numérateur, prendre 9 répéter avec le même nombre de chiffres et réduire la fraction.

Par exemple, .3 répéter est le même que 3/9. Réduisez en divisant les deux côtés par le gcd (3 dans ce cas) et vous obtenez 1/3.

Vous devrez effectuer des calculs supplémentaires si vous pouvez extraire un nombre décimal répétitif à partir d'un nombre décimal final, par ex. .133333333.

3

La technique que j'appris au collège:

x = 0.33333 
10 x = 3.33333 

10x - x = 3.3333 - .3333 

9x = 3 

x = 3/9 

Reduce 3/9 to 1/3. 
Questions connexes