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.
¿Qué pasa si le pones double a ambas?
lo mismo..
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.¡!
global variable as double
P.D.: Es mas facil ayudarte si pones la parte de tu source, y por consiguiente detectar el Problema 'X'¡!
Exacto...
Mmm... BlackZeroX... no utilizo muy seguido vb... pero existen los castings?
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
La variable Nb que tipo es?
Mira esto funciona correctamente...
Dim num1 As Single
Dim num2 As Single
Dim res As Single
Private Sub Command1_Click()
num1 = Val(Text1.Text)
num2 = Val(Text2.Text)
If num2 <> 0 Then
res = num1 / num2
Else
MsgBox "Division por cero"
End If
Text3.Text = res
End Sub
Private Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
End Sub
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..
Mmmm creo que entiendo...
mira
dim num as single
num=label1.caption
Fijate si te funciona así
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..
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.
Que raro...
MSDN:
The Caption property is a string expression that can contain up to 2,048 characters.
:-\
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
CitarPD: Me ha quedado tipo anuncion no? jaja
Si :xD
Karcrack tu eres avanzado en VB.
¿Por qué es diferente?
dim num as single
dim num2 as single
num=val(text1.text) ' Devuelve el numero con decimales
num2=val(label1.caption) ' Devuelve la parte entera
En el caso anterior se puede hacer que devuelva el número en sí?
dim num as single
dim num2 as single
num=val(text1.text) ' Devuelve el numero con decimales
num2=label1.caption ' Devuelve el numero con decimales
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
Cita de: 嘇FSend嘇 en 29 Junio 2009, 02:08 AM
CitarPD: Me ha quedado tipo anuncion no? jaja
Si :xD
Karcrack tu eres avanzado en VB.
¿Por qué es diferente?
dim num as single
dim num2 as single
num=val(text1.text) ' Devuelve el numero con decimales
num2=val(label1.caption) ' Devuelve la parte entera
En el caso anterior se puede hacer que devuelva el número en sí?
dim num as single
dim num2 as single
num=val(text1.text) ' Devuelve el numero con decimales
num2=label1.caption ' Devuelve el numero con decimales
num2=val(label1.caption) ' Devuelve la parte entera
Eso no es cierto.... a mi me devuelve con decimales incluidos.... comprueba que pones el numero de esta forma
n.##
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.
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
Podrías comparar el string y buscar el "." y cambiarlo por una ",".
Cita de: 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
Revisate esta funcion, es muy interesante ;D ;D ;D
Format()
http://www.vb6.us/tutorials/understanding-vb-format-function-custom-numeric-formats
http://msdn.microsoft.com/es-es/library/59bz1f0h(VS.80).aspx
Saludos ;D