Título: [MOD] Declarar variable parar dividir parte entera y real Publicado por: frankiani en 28 Junio 2009, 23:11 pm Estoy haciendo un programita para ayudarme en la seleccion de correas en V, voy bastante bien hasta el momento. Mi problema surge cuando al dividir dos numeros (un entero entre un numero real), el visual solo me toma la parte entera del numero real, me esta volviendo loco, declare a la variable que contiene el numero entero como single, ya que a veces puede tomar numeros decimales, y declare a la variable que tiene el numero real como single tambien. Ayuda por favor.
Título: Re: Ayuda, urgente! por favor Publicado por: h0oke en 28 Junio 2009, 23:13 pm ¿Qué pasa si le pones double a ambas?
Título: Re: Ayuda, urgente! por favor Publicado por: frankiani en 28 Junio 2009, 23:24 pm lo mismo..
Título: Re: Ayuda, urgente! por favor Publicado por: BlackZeroX en 28 Junio 2009, 23:28 pm Ami me paso algo similar cuando hacia un algoritmo de resolucion de ecuaciones (1,2, y 3er grado) solo que se situaba en un problema con puntos decimales, solo declare las variables con global (En lugar de Public u otro en alguna otra parte) en un modulo X, ojala sea algo similar.¡!
Código
P.D.: Es mas facil ayudarte si pones la parte de tu source, y por consiguiente detectar el Problema 'X'¡! Título: Re: Ayuda, urgente! por favor Publicado por: h0oke en 28 Junio 2009, 23:29 pm Exacto...
Mmm... BlackZeroX... no utilizo muy seguido vb... pero existen los castings? Título: Re: Ayuda, urgente! por favor Publicado por: frankiani en 29 Junio 2009, 00:05 am Ok, aca coloco el segmento que no me funciona, quite las declaraciones!! para no pasar pena aqui jajaja bueno, la cosa es que el valor donde esta guardado Ha, por ejemplo, es 4,878.. y en las operaciones solo toma el 4, el valor de Hd generalmente es un entero...
Private Sub cmdNb_Click() Hd = Val(lblHd.Caption) Ha = Val(lblHa.Caption) If lblHa.Caption = "" Then MsgBox "No se ha calculado el valor de la potencia nominal tabulada por banda", vbExclamation, "Advertencia" ElseIf lblHd.Caption = "" Then MsgBox "No se ha calculado el valor de la potencia de diseño", vbExclamation, "Advertencia" ElseIf (Hd Mod Ha) = 0 Then Nb = (Hd / Ha) lblNb.Caption = Nb Else Nb = (Hd \ Ha)+1 lblNb.Caption = Nb End If End Sub Título: Re: Ayuda, urgente! por favor Publicado por: h0oke en 29 Junio 2009, 00:11 am La variable Nb que tipo es?
Título: Re: Ayuda, urgente! por favor Publicado por: h0oke en 29 Junio 2009, 00:19 am Mira esto funciona correctamente...
Código
Título: Re: Ayuda, urgente! por favor Publicado por: frankiani en 29 Junio 2009, 00:33 am No entiendo tu post Fsend, no creo que estes claro en lo que quiero hacer, quiero saber porque solo se me toma la parte entera de la variable Ha, la variable Nd no me importa como se, porque segun el codigo siempre debe ser entero, igualmente pudiera declararla como entero, pero no se como funciona eso..
Título: Re: Ayuda, urgente! por favor Publicado por: h0oke en 29 Junio 2009, 00:45 am Mmmm creo que entiendo...
mira Código
Fijate si te funciona así Título: Re: Ayuda, urgente! por favor Publicado por: frankiani en 29 Junio 2009, 01:08 am Me has salvado la vida jajaja asi si me funciono, pero no entiendo porque no funcionaba con la linea
Ha=val(lblHa.caption) Seria interesante saber porque.. Título: Re: Ayuda, urgente! por favor Publicado por: h0oke en 29 Junio 2009, 01:11 am De nada.
La función val, devuelve el valor numérico de un string. Me imaginaría que la propiedad .caption en los labels no serán un string. Ya investigaré mas del tema. Título: Re: Ayuda, urgente! por favor Publicado por: h0oke en 29 Junio 2009, 01:25 am Que raro...
MSDN: The Caption property is a string expression that can contain up to 2,048 characters. :-\ Título: Re: Ayuda, urgente! por favor Publicado por: Karcrack en 29 Junio 2009, 02:03 am VB es tiene un compilador muy inteligente... que lo que hace es que si tu no le indicas el tipo de variable usa por defecto un Variant...
Asi que recordad siempre usar Option Explicit y declarar vuestras variables con tipo! PD: Me ha quedado tipo anuncion no? jaja :xD :xD Buenas Noches ;D Título: Re: Ayuda, urgente! por favor Publicado por: h0oke en 29 Junio 2009, 02:08 am Citar PD: Me ha quedado tipo anuncion no? jaja Si :xDKarcrack tu eres avanzado en VB. ¿Por qué es diferente? Código
En el caso anterior se puede hacer que devuelva el número en sí? Código
Título: Re: Ayuda, urgente! por favor Publicado por: frankiani en 30 Junio 2009, 11:41 am Perfecto, mi programa quedo excelente :) gracias a todos por su ayuda! cuando termine de perfeccionar mi programa lo aporto a la comunidad, por si hay algun ingeniero por aca :P
Título: Re: Ayuda, urgente! por favor Publicado por: Karcrack en 30 Junio 2009, 12:35 pm Citar PD: Me ha quedado tipo anuncion no? jaja Si :xDKarcrack tu eres avanzado en VB. ¿Por qué es diferente? Código
En el caso anterior se puede hacer que devuelva el número en sí? Código
Código: num2=val(label1.caption) ' Devuelve la parte entera Título: Re: Ayuda, urgente! por favor Publicado por: h0oke en 30 Junio 2009, 20:17 pm Karcrack tienes razón. En realidad caption lee correctamente el valor. La verdad no se porque a el no le funcionará, recién lo he probado y rula bien.
Gracias Karcrack. Título: Re: [MOD] Declarar variable parar dividir parte entera y real Publicado por: frankiani en 3 Julio 2009, 02:29 am como hago para que los numeros sean leidos como #.##?? porque en la expresion que se imprime en el label, viene de otro label, cuyo resultado se ve expresado como #,## :S
Título: Re: [MOD] Declarar variable parar dividir parte entera y real Publicado por: VonN en 3 Julio 2009, 02:50 am Podrías comparar el string y buscar el "." y cambiarlo por una ",".
Título: Re: [MOD] Declarar variable parar dividir parte entera y real Publicado por: Karcrack en 3 Julio 2009, 15:17 pm como hago para que los numeros sean leidos como #.##?? porque en la expresion que se imprime en el label, viene de otro label, cuyo resultado se ve expresado como #,## :S Revisate esta funcion, es muy interesante ;D ;D ;D Código
Código: http://www.vb6.us/tutorials/understanding-vb-format-function-custom-numeric-formats Saludos ;D |