Autor
|
Tema: duda con calculos en vb y porcentaje (Leído 10,031 veces)
|
Tengu
Desconectado
Mensajes: 330
2+1 = 1 , despues de todo , tdo es relativo
|
hola a todos.., tengo una duda de calculo en vb,...
resulta que estoy desarrollando una aplicacion y me faltaria la forma de sacar el porcentaje de parecido de un numero a otro. es decir:
supongamos que tengo un numero "marcador" que puede ser un numero entero desde cero (incluido) en adelante. el cual llamaremos "A"
Y como regla repetitiva el programa generaria numeros al azar (tambien 0 o positivos enteros) , y a este valor lo llamaremos "B"
entonces como hariamos para saber en Porcentaje del acercamiento de este numero B a mi marcador A ????
si alguien tiene un razonamiento logico , funcional que pueda llevarse a vb, se los agradezco.. xk yo ya me enrede jaj. y a veces cuando miras tanto una cosa terminas por no ver absolutamente nada..
Gracias
|
|
|
En línea
|
Encuentros por Video y Chat !!
|
|
|
Karcrack
Desconectado
Mensajes: 2.416
Se siente observado ¬¬'
|
Porcentaje de acercamiento? Que pretendes obtener teniendo solo dos números?... Puedes saber cuantas veces A es mas grande que B o viceversa.. Pero no entiendo que es el porcentaje que quieres... (A/B)*100
|
|
|
En línea
|
|
|
|
Tengu
Desconectado
Mensajes: 330
2+1 = 1 , despues de todo , tdo es relativo
|
mira, el temas es asi. A se genera al cargarce la aplicacion(o sea que yo no conozco el valor) y B se genera despues aleatoriamente Suponiendo que A= 18 entonces... lo que quisiera saber es si B fuera (19) como podria yo saber si estoy cerca y como podria adaptarlos datos para mostrarlos a modo de porcentaje. por ejemplo si A=18 y b = 19 => los numeros se parecen en un %v 99.999 ya que A es casi = a B... Seria algo como calcular la distancia entre dos puntes en la ordenada X y cada vez que B este mas cerca de A entonces estara siendo mas parecido, hasta llegar a ocupar el mismo punto cunado A = B. Se entiende?? Es que toy complicado para explicarlo...
|
|
|
En línea
|
Encuentros por Video y Chat !!
|
|
|
Tengu
Desconectado
Mensajes: 330
2+1 = 1 , despues de todo , tdo es relativo
|
Dim a As String Dim b As String Dim distanciaayb As String Private Sub Command1_Click() If a < b Then distanciaayb = Val(b) - Val(a) Else distanciaayb = Val(a) - Val(b) End If MsgBox distanciaayb End Sub
de esta manera sale la distancia ente A y B pero como puedo aumentar el porcentaje proporcianolmente a medida que la distancia disminuye hasta llegar a distancia CERO porcentaje CIEN ???
|
|
|
En línea
|
Encuentros por Video y Chat !!
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
NO SE SI LE ATINE O NO PERO AUN ASI TE DIGO LO QUE TE ENTIENDO supongamos que se genero un numero en "X" y uno "Y" rectifico cual es el mayor y con base a esto lo mando a una funcion donde el mayor el es 100% y el menor es una parte de ese porcentaje es decir A=19 B=50 por decir algo Private Sub Form_Load() 'juega con estos valores a = 50 b = 49 'Fin valores If a > b Then res = Porcentaje(a, b) ElseIf b > a Then res = Porcentaje(b, a) Else res = 100 End If MsgBox res End Sub Function Porcentaje(ByVal ValMax As Integer, ByVal valMin As Integer) As Long Porcentaje = (valMin * 100) / ValMax End Function
Edito------------------------- Option Explicit Private Sub Form_Load() Dim a As Integer Dim b As Integer Dim res As String a = 19 b = 50 res = IIf(a > b, Porcentaje(a, b), IIf(b > a, Porcentaje(b, a), 100)) MsgBox res End Sub Function Porcentaje(ByVal ValMax As Integer, ByVal valMin As Integer) As Long Porcentaje = (valMin * 100) / ValMax End Function
|
|
« Última modificación: 18 Mayo 2009, 23:17 pm por ░▒▓BlackZeroҖ▓▒░ »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
Tengu
Desconectado
Mensajes: 330
2+1 = 1 , despues de todo , tdo es relativo
|
sisi, es eso lo que busco, aunk tu code tiene un pekeño fallo ya que cuando A= 19 B = 1 daun resultado de "5", siende que la distancia entre A y B = 18, y en iguales condiciones cuando A=19 B = 37 ............. Distancia tambien es 18 pero arroja un resultado de 51 el cual es diferente y no confitrma la formula. Pero igualmente me ayudo a razonar y lo solucione de una manera un pco sucia y chapucera pero solucion al fin. Dios bendiga a nuestro amado IF Private Sub Form_Load() a = "18" b = "6" End Sub
Private Sub Command1_Click() If Not a < b Then distanciaayb = Val(a) - Val(b) Else distanciaayb = Val(b) - Val(a) End If
MsgBox distanciaayb
If distanciaayb < 100 Then
If Not distanciaayb = "0" Then Porcentaje = Val("100") - Val(distanciaayb) Else Porcentaje = "0" End If
MsgBox "porcentaje % " + Porcentaje Else MsgBox "la Distancia es muy Grande .,el resultado no es alentador" End If End Sub
aunk se puede mejorar pero lalogica ya esta plsmada. Muchas Gracias.!!!
|
|
|
En línea
|
Encuentros por Video y Chat !!
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
no hay fallo en el trozo que plasme en si lo que hice fue tomar en consideración de 0 a X siendo 0 = 0% y X = 100% jamas tome diferencial alguno
graficamente hablando tome como referencia el Numero mayor como 100% y el numero cero como 0% entonces
0------------------18 0------------------------------------------------------------100
= 18% casi igual y de diferencia solo se restaria ese 18% el 100% que seria 82% pero da igual no es lo que pedias...!¡
A=19 B=1
1= 5% de 19 por ende es 5% igual de 19 y 95% diferente
P.D.: creo que deberias tranajar con regla de 3 en lugar de siempre esperar un numero menor a 100,
Si el la diferencia de A y B = 100 dice que es un numero grande?...¡!
Saludos, Dulces Lunas
|
|
« Última modificación: 19 Mayo 2009, 00:00 am por ░▒▓BlackZeroҖ▓▒░ »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
Tengu
Desconectado
Mensajes: 330
2+1 = 1 , despues de todo , tdo es relativo
|
exacto. es que para mi proyecto una diferencia entre punto y punto que supere los 60 es gigante y ya no sirve , y en una regla de tres
a............................100 % b............................X %
no funcionaria pues los numeros se generan aleatoriamente y supongamos que
A = 18
si B fuera 75 , seria inaceptable para mi proyecto que fuera un % 416.66 se mejante.
xk por logica si es un % 100 significa que a = B . entonces la regla de tres simple es inaceptable
y ni hablemos Si A = 0 xk hay seria un % 75.000 ja.
Gracias por toda tu coolaboracion Saludos Buenas noches
|
|
|
En línea
|
Encuentros por Video y Chat !!
|
|
|
jackl007
Desconectado
Mensajes: 1.403
[UserRPL]
|
El codigo seria asi: Dim A, B As Integer A = 15 'Nmero al azar B = 12 'Numero con el que se compara 'Tienes dos puntos y quieres saber que tanto se parecen los valores de los mismos: A, B; asi que comparamos A con respecto a B MsgBox Str((A * 100) / B) & "%" 'El resultado es 125%, y tiene logica, pues el numero 15 se aleja de 12, es como aumentar o disminuir un zoom ' a un documento PDF (salvo que aqui es inverso) 'Si el numero A fuese menor que B, entonces da el porcentaja de aproximacion o acercamiento (que tanto se parece A a B)
Por cierto si vas a hacer esto: If Not A < B Then distanciaayb = Val(A) - Val(B) Else distanciaayb = Val(B) - Val(A) End If
Para eso existe la funcion ABS: Valor absoluto distanciaayb = Abs(A - B)
Explica un poco más del problema, a lo mejor lo correcto es otra cosa...
|
|
« Última modificación: 19 Mayo 2009, 04:05 am por jackl007 ツ »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Cálculos Java, mi primner ejemplo
Java
|
Meta
|
2
|
5,792
|
9 Febrero 2011, 02:10 am
por Meta
|
|
|
Porcentaje de usuarios por país?
Foro Libre
|
Aikanáro Anário
|
0
|
1,742
|
27 Mayo 2011, 00:18 am
por Aikanáro Anário
|
|
|
[BATCH] ¿Hacer calculos sexadecimales?
Scripting
|
Meine programmen
|
3
|
2,591
|
3 Junio 2012, 06:14 am
por BatchianoISpyxolo
|
|
|
un if con cálculos múltiples[BATCH]
Scripting
|
trolleoatodos
|
4
|
3,328
|
21 Agosto 2013, 14:14 pm
por trolleoatodos
|
|
|
Duda con el uso de porcentaje
Java
|
arts
|
2
|
1,858
|
3 Enero 2014, 01:56 am
por arts
|
|