Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/09/2009, 15:41
Avatar de cadesa
cadesa
 
Fecha de Ingreso: septiembre-2007
Ubicación: Guatemala
Mensajes: 130
Antigüedad: 16 años, 8 meses
Puntos: 0
Busqueda Convertir Decimal a Fracción

Hola como están fijense que tengo una función que me convierte decimales a fracción, la cosa es que no me lo convierte bien, dado que si tengo 1.33333 la conversión me muestra 1 333/1000 y el número correcto es 4/3 por lo cual yo quisieran que me dieran su opinion y me dijeran en como puedo mejorar el código para que me despliegue los datos correctamente.

Código Código de Fracción VB.NET:
Ver original
  1. Public Function ConvFraccion(ByVal Numero As Decimal) As String
  2.         Dim Numerador, Denominador, Entero As Integer
  3.         Dim Simplificar As Boolean
  4.         Entero = Decimal.Truncate(Numero)
  5.         Numerador = (Numero - Entero) * 100000
  6.         Denominador = 100000
  7.         If Numero - Entero = 0 Then
  8.             ConvFraccion = CStr(Entero)
  9.         Else
  10.             Simplificar = True
  11.             Do While Simplificar
  12.                 If Numerador Mod 2 = 0 And Denominador Mod 2 = 0 Then
  13.                     Numerador = Numerador / 2
  14.                     Denominador = Denominador / 2
  15.                 Else
  16.                     If Numerador Mod 3 = 0 And Denominador Mod 3 = 0 Then
  17.                         Numerador = Numerador / 3
  18.                         Denominador = Denominador / 3
  19.                     Else
  20.                         If Numerador Mod 5 = 0 And Denominador Mod 5 = 0 Then
  21.                             Numerador = Numerador / 5
  22.                             Denominador = Denominador / 5
  23.                         Else
  24.                             If Numerador Mod 7 = 0 And Denominador Mod 7 = 0 Then
  25.                                 Numerador = Numerador / 7
  26.                                 Denominador = Denominador / 7
  27.                             Else
  28.                                 If Numerador Mod 13 = 0 And Denominador Mod 13 = 0 Then
  29.                                     Numerador = Numerador / 13
  30.                                     Denominador = Denominador / 13
  31.                                 Else
  32.                                     Simplificar = False
  33.                                 End If
  34.                             End If
  35.                         End If
  36.                     End If
  37.                 End If
  38.             Loop
  39.             If Entero <> 0 Then
  40.                 ConvFraccion = CStr(Entero) + " " + CStr(Numerador) + "/" + CStr(Denominador)
  41.             Else
  42.                 ConvFraccion = CStr(Numerador) + "/" + CStr(Denominador)
  43.             End If
  44.         End If
  45.     End Function
__________________
死は永遠の一歩だ