Visual Basic - PASAR UN NUMERO DECIMAL A UN NUMERO FRACCIONARIO

Life is soft - evento anual de software empresarial
 
Vista:

PASAR UN NUMERO DECIMAL A UN NUMERO FRACCIONARIO

Publicado por JOHAN (13 intervenciones) el 04/09/2004 07:05:02
HOLA AMIGOS COMO ESTAN, ESPERO QUE MUY BIEN. SOY UN NOVATO EN ESTO
DE LA PROGRAMACIÓN Y CADA DÍA QUISIERA APRENDER MÁS DE ESTE MUNDO. UTILIZO
VISUAL BASIC 6

Mi pregunta es la siguiente:

Elabore un programa el cual me resuelve ecuaciones de segundo grado osea de la forma
ax2 + bx +c = 0. Este tipo de ecuaciones normalmente tiene dos soluciones reales, muchas de ellas
son racionales (fraccionarias), pero obviamente al hacer el calculo de estas soluciones el programa
no me las muestra en forma de fraccionario si no en forma de numero decimal.

Por Ejemplo:

Si las soluciones de la ecuacion son X1 = 1/2 y X2= - 6/8 el me las muestra en el programa
X1= 0,5 y X2= - 0,75.

Estas soluciones cada una aparece en unos textbox los cuales llame TxtR1 y TxtR2. Lo que yo
quiero saber es como hago para que los TextBox me muestren la solución en forma de fraccionario
y no en forma de decimal.

Si alguno me pudiera colaborar le agradeceria muchísimo es algo urgente que tengo para la Universisdad.

JOHAN
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:PASAR UN NUMERO DECIMAL A UN NUMERO FRACCIONARI

Publicado por Ruri (583 intervenciones) el 04/09/2004 07:39:11
Johan:
Prueba esta función. Se trata de convertir el número a cadena y de trabajar la parte fraccionaria y entera para obtener numerador y denominador de la fracción

'Agrega un comando para la prueba
Private sub Command1_Click
MsgBox DecimalHaciaEntero(1.75)
End Sub

'Función que convierte decimal a fracción
Private funcion DecimalHaciaEntero(Byval dec as single) as String
Dim s As String, fract As String, iPos As Long, lngFract As Long, inte As Long, deno As Long
s = cstr(dec)
iPos = InStr(1, s, ".", vbTextCompare)
If iPos < 1 Then Exit Sub
fract = Mid$(s, iPos + 1)
lngFract = CLng(Val(fract))
inte = CLng(Int(Val(s)))
deno = 10 ^ Len(fract)
s = (inte * deno + fract) & "/" & deno
DecimalHaciaEntero = s
End Function

Saludos Ruri
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:PASAR UN NUMERO DECIMAL A UN NUMERO FRACCIONARI

Publicado por ZAMEJ (1 intervención) el 02/11/2017 07:33:44
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Public Function Decimal_a_fraccion(ByVal dec As Single) As String
'Función que convierte decimal a fracción
'Publicado por Ruri el 04/09/2004 y adaptado por Zamej el 2017-11-01.
    Dim s As String, fract As String, iPos As Long, lngFract As Long
    Dim inte As Long, Denominador As Long, Numerador As Long
    Dim MaxComDiv As Long, Fracc_nume As Long, Fracc_deno As Long
    s = CStr(dec)
    iPos = InStr(1, s, ".", vbTextCompare)
    If iPos < 1 Then Exit Function
    fract = Mid$(s, iPos + 1)
    lngFract = CLng(Val(fract))
    inte = CLng(Int(Val(s)))
    Denominador = 10 ^ Len(fract)
    Numerador = (inte * Denominador) + fract
    's = Numerador & "/" & Denominador  'Ej:4.78 = 478/100
    MaxComDiv = Excel.WorksheetFunction.Gcd(Numerador, Denominador)
    Fracc_nume = Numerador / MaxComDiv
    Fracc_deno = Denominador / MaxComDiv
    s = Fracc_nume & "/" & Fracc_deno 'Ej:4.78 = 239/50
    Decimal_a_fraccion = s
End Function
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar