Calculadora en VB

Estoy haciendo un programa en Visual Basic 6 sobre una calculadora y no consigo que cuando los números son decimales y hago una operación al dar igual me apaezcan los decimales; por ej: 12,5+3=15,5 pues yo solo obtengo 15.
¿Qué código tendría que introducir para que me diesen bien los resultados?
He visto otras calculadoras y la verdad que la mía es muy sencillita pero me he bloqueado.

1 Respuesta

Respuesta
1
Si me pegas aquí el código quizás pueda ayudarte
Este es todo el código que tengo:
Dim num1 As Double
Dim num2 As Double
Dim opera As Double
Dim ComaD As Double
Dim operando As Double
Private Sub Calculadora_load()
ComaD = 1
num1 = 0
num2 = 0
opera = 0
resp = 0
End Sub
Private Sub Borra1_Click()
Resultado.Caption = ""
num2 = 0
End Sub
Private Sub Borrar_Click()
Resultado.Caption = ""
num1 = 0
num2 = 0
ComaD = 0
operando = 0
End Sub
Private Sub Cero_Click()
Resultado.Caption = Resultado.Caption + Str(0)
End Sub
Private Sub Cinco_Click()
Resultado.Caption = Resultado.Caption + Str(5)
End Sub
Private Sub Coma_Click()
ComaD = ComaD + 1
If ComaD = 1 Then
If Resultado.Caption = "" Then
Resultado.Caption = &O0 & ","
Else
Resultado.Caption = Resultado.Caption + ","
End If
Else
Resultado.Caption = Resultado.Caption
End If
End Sub
Private Sub Cuatro_Click()
Resultado.Caption = Resultado.Caption + Str(4)
End Sub
Private Sub División_Click()
operando = operando + 1
If operando = 1 Then
num1 = Val(Resultado.Caption)
Resultado.Caption = ""
opera = 4
Else
num2 = Val(Resultado.Caption)
num1 = num1 / num2
Resultado.Caption = ""
opera = 4
End If
End Sub
Private Sub Dos_Click()
Resultado.Caption = Resultado.Caption + Str(2)
End Sub
Private Sub Igual_Click()
num2 = Val(Resultado.Caption)
If opera = 1 Then
resp = num1 + num2
End If
If opera = 2 Then
resp = num1 - num2
End If
If opera = 3 Then
resp = num1 * num2
End If
If opera = 4 Then
If num2 = 0 Then
resp = "Error"
Else
resp = num1 / num2
End If
End If
Resultado.Caption = resp
End Sub
Private Sub Multiplicación_Click()
operando = operando + 1
If operando = 1 Then
num1 = Val(Resultado.Caption)
Resultado.Caption = ""
opera = 3
Else
num2 = Val(Resultado.Caption)
num1 = num1 * num2
Resultado.Caption = ""
opera = 3
End If
End Sub
Private Sub Nueve_Click()
Resultado.Caption = Resultado.Caption + Str(9)
End Sub
Private Sub Ocho_Click()
Resultado.Caption = Resultado.Caption + Str(8)
End Sub
Private Sub Resta_Click()
operando = operando + 1
If operando = 1 Then
num1 = Val(Resultado.Caption)
Resultado.Caption = ""
opera = 2
Else
num2 = Val(Resultado.Caption)
num1 = num1 - num2
Resultado.Caption = ""
opera = 2
End If
End Sub
Private Sub Salir_Click()
End
End Sub
Private Sub Seis_Click()
Resultado.Caption = Resultado.Caption + Str(6)
End Sub
Private Sub Siete_Click()
Resultado.Caption = Resultado.Caption + Str(7)
End Sub
Private Sub Suma_Click()
operando = operando + 1
If operando = 1 Then
num1 = Val(Resultado.Caption)
Resultado.Caption = ""
opera = 1
Else
num2 = Val(Resultado.Caption)
num1 = num1 + num2
Resultado.Caption = ""
opera = 1
End If
End Sub
Private Sub Tres_Click()
Resultado.Caption = Resultado.Caption + Str(3)
End Sub
Private Sub Uno_Click()
Resultado.Caption = Resultado.Caption + Str(1)
End Sub
He intentado hacerla lo más fácil posible ya que he visto algunas por Internet pero me han parecido muy complicadas.
Espero no estar causándote muchas molestias.
Gracias por anticipado.
A ver si es que las variables en las que almacenas los datos no son de tipo decimal y por eso no las suma. prueba a definirlas de tipo double.
Tengo todas definidas como double, aún así no me da la solución.
Gracias de todas formas por la respuesta.
Copia y pega este código, está corregido...
@@@@@@@@@@@@@@@
Option Explicit
Dim num1 As Double
Dim num2 As Double
Dim opera As Double
Dim ComaD As Double
Dim operando As Double
Dim resp As String
Private Sub Borra1_Click()
resultado.Caption = ""
num2 = 0
End Sub
Private Sub Borrar_Click()
resultado.Caption = ""
num1 = 0
num2 = 0
ComaD = 0
operando = 0
End Sub
Private Sub Cero_Click()
resultado.Caption = resultado.Caption & "0"
End Sub
Private Sub Cinco_Click()
resultado.Caption = resultado.Caption & "5"
End Sub
Private Sub Coma_Click()
ComaD = ComaD + 1
If ComaD = 1 Then
If resultado.Caption = "" Then
resultado.Caption = &O0 & ","
Else
resultado.Caption = resultado.Caption & ","
End If
Else
resultado.Caption = resultado.Caption
End If
End Sub
Private Sub Cuatro_Click()
resultado.Caption = resultado.Caption & "4"
End Sub
Private Sub División_Click()
operando = operando + 1
If operando = 1 Then
num1 = CDbl(resultado.Caption)
resultado.Caption = ""
opera = 4
Else
num2 = CDbl(resultado.Caption)
num1 = num1 / num2
resultado.Caption = ""
opera = 4
End If
ComaD = 0
End Sub
Private Sub Dos_Click()
resultado.Caption = resultado.Caption & "2"
End Sub
Private Sub Form_Load()
ComaD = 0
num1 = 0
num2 = 0
opera = 0
resp = 0
End Sub
Private Sub Igual_Click()
num2 = CDbl(resultado.Caption)
If opera = 1 Then
resp = num1 + num2
End If
If opera = 2 Then
resp = num1 - num2
End If
If opera = 3 Then
resp = num1 * num2
End If
If opera = 4 Then
If num2 = 0 Then
resp = "Error"
Else
resp = num1 / num2
End If
End If
resultado.Caption = resp
ComaD = 0
End Sub
Private Sub Multiplicación_Click()
operando = operando + 1
If operando = 1 Then
num1 = CDbl(resultado.Caption)
resultado.Caption = ""
opera = 3
Else
num2 = CDbl(resultado.Caption)
num1 = num1 * num2
resultado.Caption = ""
opera = 3
End If
ComaD = 0
End Sub
Private Sub Nueve_Click()
resultado.Caption = resultado.Caption & "9"
End Sub
Private Sub Ocho_Click()
resultado.Caption = resultado.Caption & "9"
End Sub
Private Sub Resta_Click()
operando = operando + 1
If operando = 1 Then
num1 = CDbl(resultado.Caption)
resultado.Caption = ""
opera = 2
Else
num2 = CDbl(resultado.Caption)
num1 = num1 - num2
resultado.Caption = ""
opera = 2
End If
ComaD = 0
End Sub
Private Sub Salir_Click()
End
End Sub
Private Sub Seis_Click()
resultado.Caption = resultado.Caption & "6"
End Sub
Private Sub Siete_Click()
resultado.Caption = resultado.Caption & "7"
End Sub
Private Sub Suma_Click()
operando = operando + 1
If operando = 1 Then
num1 = CDbl(resultado.Caption)
resultado.Caption = ""
opera = 1
Else
num2 = CDbl(resultado.Caption)
num1 = num1 + num2
resultado.Caption = ""
opera = 1
End If
ComaD = 0
End Sub
Private Sub Tres_Click()
resultado.Caption = resultado.Caption & "3"
End Sub
Private Sub Uno_Click()
resultado.Caption = resultado.Caption & "1"
End Sub
@@@@@@@@@@@@@
Los problemas eran varios.
1- Al meter una coma dejaba un espacio en blanco entre la coma y el siguiente numero, usa siempre & y no +, ademas no uses str(numero), metelo así "3" total debe ser cadena hasta el momento antes de operar
2- Hay que convertir los valores usando la conversión adecuada, val no sirve, debe ser cdbl(cadena)
3- Para los botones te recomiendo que uses una matriz de controles y ahorras código
4 pon los nombre así y te ayudara mucho
Cuadros de texto -- txtnombre
Labels --- lblnombre
Botones --- botnombre
Formularios --- frm nombre
Bueno nada que te vaya bien y aquí estamos pa lo que sea
Muchas gracias, por todo y espero no haberte causado muchas molestias.
Lo del Cdbl lo había visto en otras aplicaciones pero no sabía muy bien como funcionaba.
Lo dicho muchas gracias y si tengo algún problema con algo más ya se donde encontrarte.
Un saludo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas