Foros del Web » Programación para mayores de 30 ;) » .NET »

Tipo de dato double

Estas en el tema de Tipo de dato double en el foro de .NET en Foros del Web. Hola amigos¡¡¡ tengo un problema con un double, estoy haciendo una aplicacion sencilla de convercion de centigrados a farhenheit y viceversa, pero cuando meto datos ...
  #1 (permalink)  
Antiguo 11/12/2011, 22:44
Avatar de halexander  
Fecha de Ingreso: abril-2010
Ubicación: En algun lugar de mexico xD
Mensajes: 59
Antigüedad: 14 años, 7 meses
Puntos: 0
Tipo de dato double

Hola amigos¡¡¡ tengo un problema con un double, estoy haciendo una aplicacion sencilla de convercion de centigrados a farhenheit y viceversa, pero cuando meto datos con punto decimal me calcula mal =S mi codigo es el siguiente:

Tengo 2 textbox y un boton, una variable global de la clase que es la que valida lo que se escribe en cada textbox


Código visual basic:
Ver original
  1. 'Declaro Variables globales para la clase
  2.     Private objTextBox As TextBox = Nothing
  3.  
  4. Private Sub btnAceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAceptar.Click
  5.  
  6.         'Declaro variable
  7.         Dim douGrados As Double
  8.  
  9.         Try
  10.  
  11.             'Si se escribe en la caja de texto de Grados Centigrados
  12.             If (objTextBox Is txbGradosC) Then
  13.                 douGrados = (CDbl(txbGradosC.Text)) * (9.0 / 5.0) + 32
  14.                 'douGrados = Convert.ToDouble(txbGradosC.Text) * (9.0 / 5.0) + 32
  15.                 txbGradosF.Text = String.Format("{0:F2}", douGrados)    'Muestro el resultado redondeado a 2 decimales
  16.             End If
  17.  
  18.             'Si se escribe en la caja de texto de Grados Fahrenheit
  19.             If (objTextBox Is txbGradosF) Then
  20.                 douGrados = (CDbl(txbGradosF.Text) - 32) * (5.0 / 9.0)
  21.                 'douGrados = (Convert.ToDouble(txbGradosF.Text) - 32) * (5.0 / 9.0)
  22.                 txbGradosC.Text = String.Format("{0:F2}", douGrados)    'Muestro el resultado redondeado a 2 decimales
  23.             End If
  24.  
  25.         Catch ex As Exception
  26.  
  27.             txbGradosC.Text = "0.00"
  28.             txbGradosF.Text = "32.00"
  29.  
  30.         End Try
  31.     End Sub

Ahora, lo hago de dos formas (una esta comentada) convierto lo que contiene el textbox.text en un numero flotante que seria de tipo Double ---douGrados = (CDbl(txbGradosC.Text))--- y la otra forma ---douGrados = Convert.ToDouble(txbGradosC.Text)--- pero al imprimir el resultado de eso en la ventana de inmediato si yo meto un 15.5 en el textbox me arroja un 155.0 y con eso hace la operacion :S por lo tanto lo hace mal :S pero si yo meto un numero entero como un 15 sin problemas me da el resultado¡¡ =O

Ojala me puedan ayudar =) de antemano muchas gracias =)
  #2 (permalink)  
Antiguo 11/12/2011, 23:10
Avatar de ramirezmario7  
Fecha de Ingreso: febrero-2008
Ubicación: Medellín
Mensajes: 336
Antigüedad: 16 años, 9 meses
Puntos: 56
Respuesta: Tipo de dato double

Ese problema debe de ser por el formato de los numeros de tu equipo, verifica si colocando la coma te hace la operacion bien, si es eso puedes configurar que tu aplicacion trabaje con el formato que tu deseas.

prueba 15,5 en vez de 15.5
  #3 (permalink)  
Antiguo 11/12/2011, 23:13
Avatar de halexander  
Fecha de Ingreso: abril-2010
Ubicación: En algun lugar de mexico xD
Mensajes: 59
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Tipo de dato double

Cita:
Iniciado por ramirezmario7 Ver Mensaje
Ese problema debe de ser por el formato de los numeros de tu equipo, verifica si colocando la coma te hace la operacion bien, si es eso puedes configurar que tu aplicacion trabaje con el formato que tu deseas.

prueba 15,5 en vez de 15.5
Excelente¡¡¡ xD jijiji muchisimas gracias Mario¡¡ eres grnade =D esa es la solucion al problema =)

Etiquetas: double, flotante, grados, textbox, vb, vs2010, vbnet
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:38.