Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Problemas con la suma

Estas en el tema de Problemas con la suma en el foro de Visual Basic clásico en Foros del Web. Lo que pasa es que estoy haciendo un formulario donde se puedan sumar dos vectores, para ello, se introducen dos fuerzas y dos ángulos, el ...
  #1 (permalink)  
Antiguo 26/03/2011, 16:22
 
Fecha de Ingreso: marzo-2011
Mensajes: 4
Antigüedad: 13 años, 7 meses
Puntos: 0
Pregunta Problemas con la suma

Lo que pasa es que estoy haciendo un formulario donde se puedan sumar dos vectores, para ello, se introducen dos fuerzas y dos ángulos, el programa lo descompone en eje X y eje Y, hasta ahí todo bien, pero cuando va a sumarlos el resultado no es el que debería, por ejemplo, me da 2,5 y 2,7 en los ejes pero a la hora de sumarlos me da 4 como total, no tengo ninguna función Round pero si así fuera debería ser a 5 no?
  #2 (permalink)  
Antiguo 26/03/2011, 17:01
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 18 años, 3 meses
Puntos: 29
Respuesta: Problemas con la suma

Creo que el problema lo tienes porque guardas los primeros valores en textbox y despues los sumas.
Al pasarlos a los textbox, los valores 2,5 y 2,7 adquieren las comas decimales, pero en realidad, al sumarlos necesitas que los decimales esten marcados por punto y no por coma.

Haz la prueba reemplazando las comas por puntos antes de sumarlos.

Suponiendo que los valores los has metido en los textbox Text1 y Text2:

Código vb:
Ver original
  1. Dim Resultado As Long
  2. Resultado=Replace(Text1, ",", ".") + Replace(Text2, ",", ".")
  3. msgbox Resultado

PD: He hecho unas pruebas y no parece ser tal como yo lo veía. Debe ser algo diferente pero seguramente un detalle así de tonto.
Si nos dás algún dato mas quizá entre todos lo encontremos.

Lo que parece claro es que los decimales no los está usando. Mira si conviertes en integer los valores en algún momento.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!

Última edición por pkj; 26/03/2011 a las 17:18
  #3 (permalink)  
Antiguo 28/03/2011, 01:41
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 9 meses
Puntos: 89
Respuesta: Problemas con la suma

También puede ser que estes guardando los valores en variables enteras y por tanto descarte la parte decimal
  #4 (permalink)  
Antiguo 29/03/2011, 17:40
 
Fecha de Ingreso: marzo-2011
Mensajes: 4
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Problemas con la suma

El codigo es este

fx1 = f1 * Cos(a1 * (3.1416 / 180))
fy1 = f1 * Sin(a1 * (3.1416 / 180))
fx2 = f2 * Cos(a2 * (3.1416 / 180))
fy2 = f2 * Sin(a2 * (3.1416 / 180))
rx1 = Val(fx1) + Val(fx2)
ry1 = Val(fy1) + Val(fy2)
  #5 (permalink)  
Antiguo 30/03/2011, 14:39
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 15 años, 1 mes
Puntos: 47
Respuesta: Problemas con la suma

Hola!
Como declaras las variables?
• fx1
• fy1
• fx2
• fy2
• rx1
• ry1
• f1
• f2
  #6 (permalink)  
Antiguo 30/03/2011, 18:15
 
Fecha de Ingreso: marzo-2011
Mensajes: 4
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Problemas con la suma

si, esas mas

a1
a2
  #7 (permalink)  
Antiguo 30/03/2011, 21:18
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 18 años, 3 meses
Puntos: 29
Respuesta: Problemas con la suma

El problema es que al pasarlos por Val() en las últimas líneas pierden los decimales (o la razón ). Debe ser por hacer Val() a 2 variables que deben ser numéricas y no texto.

Quita los Val() y se arreglará.
__________________
No hay preguntas tontas, solo gente estup..., ¡No!, ¿como era? No hay gente que pregunte a tontos... ¡Nooo!... ¡Vaya cabeza!
  #8 (permalink)  
Antiguo 02/04/2011, 11:16
 
Fecha de Ingreso: marzo-2011
Mensajes: 4
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Problemas con la suma

Había encontrado una respuesta temporal de multiplicar por 100 y luego volver a dividir por 100 pero ya tengo algo mucho mejor, en vez de hacerlos pasar como Val() los hago pasar como CDbl(), ahora todo me funciona como quiero, toma en cuenta los decimales. el codigo quedo de la siguiente manera:

fx1 = (f1 * Cos(a1 * (3.1416 / 180)))
fy1 = (f1 * Sin(a1 * (3.1416 / 180)))
fx2 = (f2 * Cos(a2 * (3.1416 / 180)))
fy2 = (f2 * Sin(a2 * (3.1416 / 180)))
rx1 = CDbl(fx1) + CDbl(fx2)
ry1 = CDbl(fy1) + CDbl(fy2)

Etiquetas: suma, vb, visualbasic
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 12:21.