¡Problemas con los decimales!

Pi = 4 * Atn(1)
Label1.Caption = pi * ((Val(Text1) / 2) ^ 2) * Val(Text2)
Label2.Caption = Val(Label2) + Label1
Label3.Caption = Val(Label3) + 1
El Label2 solamente me suma números sin decimales. ¿Cómo puedo hacerlo para que me sume también los decimales?.

1 Respuesta

Respuesta
1
En lugar de la instrucción val para los label tienes que utilizar Cdbl,
Label1.Caption = pi * ((Val(Text1) / 2) ^ 2) * Val(Text2)
Label2.Caption = CDbl(Label2) + CDbl(Label1)
Label3.Caption = CDbl(Label3) + 1
Me da un error en la ejecución del programa. Pruébalo y lo verás!
Añade dos textbox(1 y 2), un botón Command1(y dentro de _click le pones el código que me has enviado) y los Labels 1,2 y 3. Ojalá encuentres la solución. Un saludo y muchas gracias por tu atención.
Probé el código y funciona bien, tendrías que verificar que existen datos en los textbox y en los labels antes de ejecutar el código, y también que esté completa la variable pi que definistes, si te sigue dando error tendrías que mandarme directamente el numero de error y en lo posible en que linea, te aconsejo que utilices el modo paso a paso en esa subrutina.
Private Sub Command1_Click()
Dim pi
pi = 4 * Atn(1)
Label1.Caption = pi * ((Val(Text1) / 2) ^ 2) * Val(Text2)
Label2.Caption = Val(Label2) + Label1
Label3.Caption = Val(Label3) + 1
End Sub
Este es el código que funciona(sin contar los decimales), tu código me aparece el error del titulo del mensaje. Gracias por tu atención!
Un saludo. Por favor, mandame el código correcto.
Te comento que a mi me funcionan bien los dos códigos, lo que te envíe es con el uso de CDbl en vez de Val, la diferencia es que CDbl te convierte cualquier cadena de texto que contenga números en una variable numérica lista para cualquier operación matemática, los problemas pueden ser 2
1º. Si algun label o un textobox estan vacios en el momento de ejecutar el codigo, la cadena que te envian es "" o sea nada y al quere convertir esa cadena "" en un numero es donde te da el error, esa cadena "" no equivale al 0.
2º. Debes tener un problema con los signos de puntuación, fíjate en la configuración regional de la maquina cual es el símbolo de separación decimal, si tienes la coma "," ese es el error, vos debes estar queriendo tomar un numero que tiene la coma como separador decimal y el visual trabaja con el punto como separador, revisa si es eso, lo vas a ver directamente en los textbox, la separación decimal para cualquier operación matemática en visual es el punto.
Revisa esos problemas y comentame como anduvo, lo que quieres hacer es algo muy fácil, es muy común ese tipo de operaciones entre labels y textbox, así que no te preocupes que le vamos a encontrar la vuelta,
Saludos y espero que todo salga bien.
Por favor, cojete una calculadora y haz esta prueba: si introduces text1=50 y text2=50 ; ejecutas el botón Command1_Click();
El label1 te dará como resultado 98174,770424681(a mi me sale una coma). Bien hasta aquí. Si vuelves a ejecutar el botón Command1_Click() con los mismos valores (50 y 50) el label2... ¿cuánto te da? Coge una calculadora y hazlo manualmente; debería ser 196349,54. Con este programa sale 196348,770424681 (los mismos decimales que el primer resultado). Por lo tanto no funciona correctamente. En cuanto a la configuración regional de maquina que me hablas, no sé la ruta para mirar si tengo la coma como separador decimal... en este caso daría igual porque no utilizamos la coma con los valores de 50 y 50, ¿no? Un saludo y a ver si lo arreglamos ya!. Muchas gracias de verdad!
Con esos resultados que me distes pude probar todo, ya le encontré los errores, son 2
1º en el panel de control de tu maquina tienes un icono que dice Configuración regional, si el resultado en el label 1 te da con coma es porque tienes configurada la coma como separador decimal, si bien no lo utilizas con los valores 50 y 50 si lo tiene en cuanta para el segundo calculo del label2, ya que tomo un reseltado de un valor con coma.
2º el código que te envíe primero funciona bien, te da error 13 porque seguramente el label2 no tiene nada, tendrías que inizializarlo con el valor 0 para que no te de ese error, y utiliza la instrucción que te envíe, la CDbl en vez de Val, la instrucción val no te toma los decimales después de la coma. Hace esa prueba y contame como anduvo, a mi los resultados fueron los que te tiene que dar, el label2 después del segundo click me entrega 196349,540849362.
Hola Leo, primero de todo agradecerte tu atención y pedirte disculpas si soy muy torpe, pero es que no logro hacerlo funcionar. He probado lo de inicializar, supongo, y al menos ya no sale el error, pero el label2 siempre coge el valor 0 por lo tanto muestra el mismo resultado que el label1.
¿Cuándo hablas de inicializar, te refieres a lo siguiente?:
Private Sub Command1_Click()
Dim pi
Label2 = 0
pi = 4 * Atn(1)
Label1.Caption = pi * ((Val(Text1) / 2) ^ 2) * Val(Text2)
Label2.Caption = CDbl(Label2) + CDbl(Label1)
Label3.Caption = Val(Label3) + 1
End Sub
Esto es lo que he probado y no logro que el label2 me cuente cada vez que ejecuto el botón. Te agradecería que me enviaras el código que a ti te funciona. Muchas gracias y un saludo!MarK
Bien, si el error no te lo tira es porque funciona todo bien, lo único que la inicialización del label no la tienes que hacer en la subrutina del Command1_click, eso hace que siempre arranque en 0, tienes que ponerla en la subrutina del formulario principal, eso hace que se ponga en 0 solo cuando el programa arranca por primera vez.
Form1_load()
Label2.Caption=0
Label3.Caption=0
End Sub
Ya estamos cerca, creo que con esto va a funcionar todo.
POR FIN! Perfecto! Te agradezco muchíssimo tu atención y dedicación. Ojalá todos los expertos fueran como tú! Un saludo y muchas gracias, de verdad!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas