Convertir números decimales a fracciones

New product

Con este algoritmo de programación puedes convertir números decimales a fracciones. Desarrollado en VB.NET.

Convertir números decimales a fracciones

Hoy en el blog para completar un poco con el trabajo de los números racionales, les traigo una función que hace el trabajo contrario. Convierte un número con decimales a fracción de forma interesante, así que, sin más, les muestro.

DarListaFracciones entrega una lista de fracciones aproximadas al número con decimales dado por el argumento d.

Como la programe como parte para la estructura de NumerosRacionales, como se puede ver en la sección:

 ListaFracciones.Add(NewNumeroRacional(numeradores(i),  denominadores(i))) 

Crea un numero racional. Si quieren usarla en sus proyectos, solo deben sustituir por bien sea una cadena de texto o su propia estructura de la siguiente forma:

 ListaFracciones.Add(numeradores(i) & “/” & denominadores(i)))

En este caso se creará una cadena de texto con numerador y denominador “N/D”

La función se muestra a continuación:

    Shared Function DarListaFracciones(d As Double) As List(Of NumeroRacional)

Dim numeradores() As Integer = {0, 1}
Dim denominadores() As Integer = {1, 0}
Dim ListaFracciones As New List(Of NumeroRacional)

Dim maxNumerador As Long = DarMaximoNumerador(d)
Dim d2 As Double = d

Dim calcD As Double = Double.NaN
Dim prevCalcD As Double = Double.NaN

'"for" para evitar el bloqueo por bucle infinito
For i = 2 To 999
ReDim Preserve numeradores(numeradores.Length + 1)
ReDim Preserve denominadores(denominadores.Length + 1)

Dim L2 As Double = Math.Floor(d2)
numeradores(i) = L2 * numeradores(i - 1) + numeradores(i - 2)
If (Math.Abs(numeradores(i)) > maxNumerador) Then Exit For

denominadores(i) = L2 * denominadores(i - 1) + denominadores(i - 2)
calcD = numeradores(i) / denominadores(i)
If (calcD = prevCalcD) Then Exit For

ListaFracciones.Add(New NumeroRacional(numeradores(i), denominadores(i)))

If (calcD = d) Then Exit For

prevCalcD = calcD
d2 = 1 / (d2 - L2)
Next
Return
ListaFracciones
End Function

Con esta función lo que se hace es eliminar la coma del número y junta todo como un bloque para que sea el máximo numerador posible para hacer la división iterativa.

Shared Function DarMaximoNumerador(f As Double) As Long
Dim
digitos As Long = 0
Dim DecimalSeparator As String = My.Application.Culture.NumberFormat.NumberDecimalSeparator

Dim ix As Integer = f.ToString().IndexOf(DecimalSeparator)
If ix <> -1 Then digitos = CLng(f.ToString().Remove(ix, 1))

Return digitos
End Function

Es todo por los momentos, pronto sacaré la aplicación para que puedan ver los programas funcionando.

Siguenos en nuestras redes Sociales


 NOTA: No olvides seguirnos en nuestras redes sociales de facebook y twitter para que formes parte de nuestra comunidad y recibas la notificacion cada vez que publiquemos algo nuevo, asi no te perderas de nada.

Escrito por:

11/05/2018

Elimar García

Eli Programa

Calificación 
12/05/2018

Lo que estaba esperando

Esta funcion es la que estaba esperando. Muchas gracias.

    ¡Escriba su propia reseña!

    Escriba una reseña

    Convertir números decimales a fracciones

    Convertir números decimales a fracciones

    Con este algoritmo de programación puedes convertir números decimales a fracciones. Desarrollado en VB.NET.

    Haz una pregunta

    No se requiere registro

    Si luego de leer nuestro articulo aun tiene dudas, puede hacer su pregunta utilizando el siguiente formulario.

    (Opcional)
    *(Requerido para ser notificado cuando la respuesta este disponible)

    Si el enlace de descarga redirige a otro producto que no es el descrito en el artículo o está roto, reportarlo usando nuestro

     FORMULARIO DE REPORTE