[MOD] Declarar variable parar dividir parte entera y real

Iniciado por frankiani, 28 Junio 2009, 23:11 PM

0 Miembros y 2 Visitantes están viendo este tema.

frankiani

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.

h0oke

¿Qué pasa si le pones double a ambas?


BlackZeroX

#3
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 (Vb) [Seleccionar]

global variable as double



P.D.: Es mas facil ayudarte si pones la parte de tu source, y por consiguiente detectar el Problema 'X'¡!
The Dark Shadow is my passion.

h0oke

Exacto...
Mmm... BlackZeroX... no utilizo muy seguido vb... pero existen los castings?

frankiani

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

h0oke


h0oke

Mira esto funciona correctamente...

Código (vb) [Seleccionar]
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


frankiani

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..

h0oke

Mmmm creo que entiendo...

mira

Código (vb) [Seleccionar]
dim num as single
num=label1.caption


Fijate si te funciona así