Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/12/2011, 22:44
Avatar de halexander
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 =)