Buscar

Email Elinv.
Búsqueda personalizada

viernes, 8 de abril de 2011

Visual Basic 6.0 Redondeo con o sin Decimales por Elinv.

/*
*
Código desarrollado por Elinv.

* http://www.bragadomas.com/forodeprogramacion/index.php
*
http://www.bragadomas.com
*
http://www.bragadomas.com.ar
*
http://luispedromendez.blogspot.com/
*
http://elinv-elinv.blogspot.com/?expref=next-blog
*/

:arrow: Hola:

:arrow: Como siempre ayudándonos en esto obtener resultados...

:arrow: Aquí les dejó una función, suficientemente explicada linea a linea, que les permitirá redondear cualquier número, hacia arriba o hacia abajo, e inclusive podrán elegir la dirección de ese redondeo, es decir, si lo desean hacia arriba o hacia abajo.




Function Redondear_con_decimales(Numero_a_Redondear As Double, Optional ByVal Cantidad_decimales As Long = 0, Optional ByVal direccion As Boolean = True) AsDouble
'establece la variable del for
Dim i As Long
'Para obtener el numero temporal cuasi redondeado
Dim Temporal As Double
'Matriz que almacena el valor acorde a la cantidad de decimales.
Dim RedDec(-10 To 10) As Double
'Valor del primer elemento de la matriz
RedDec(0) = 1
'De los restantes
For i = 1 To UBound(RedDec)
'El valor de este elemento es = al valor del anterior * 10
'Cada valor se incrementa así: 1, 10, 100, 1000, 10000, etc...
RedDec(i) = RedDec(i - 1) * 10
'El valor de este elemento es = al valor del anterior / 10
RedDec(-i) = RedDec(1 - i) / 10
'Cada valor se decrementa así: 0.1, 0.01, 0.001, 0.0001, 0.00001, etc...
Next
'Si en la función se ingreso un numero de decimales determinado...
If Numero_a_Redondear >= 0 Then
'Temporal es igual al numero a redondear, por el elemento de la matriz
'que concuerda con el numero de decimales ingresados a la función mas 0.5
'y redondea hacia arriba, si la variable boolean dirección esta a true
If direccion = True Then
Temporal = Numero_a_Redondear * RedDec(Cantidad_decimales) + 0.5
'caso contrario redondea hacia abajo
Else
Temporal = Numero_a_Redondear * RedDec(Cantidad_decimales) - 0.5
End If
'Retorna el valor final, demarcando en el entero de Temporal, la cantidad de
'decimales
Redondear_con_decimales = Int(Temporal) * RedDec(-Cantidad_decimales)
Else
'Si no se ingreso numero de decimales a obtener...
If direccion = True Then
'Y el redondeo es hacia arriba...
Temporal = -Numero_a_Redondear * RedDec(Cantidad_decimales) + 0.5
Else
'O el redondeo es hacia abajo
Temporal = -Numero_a_Redondear * RedDec(Cantidad_decimales) - 0.5
End If
'Retorna el valor obtenido.
Redondear_con_decimales = -Int(Temporal) * RedDec(-Cantidad_decimales)
End If
End Function

'En un botón Command, se debería colocar el siguiente código para probar la función.

Private Sub Command1_Click()
'Una forma de obtener resultado
MsgBox Redondear_con_decimales(125.5695892True)
'Otra forma de obtener resultado
Me.Caption = Redondear_con_decimales(125.5695892True)
End Sub


No hay comentarios:

Publicar un comentario en la entrada

Dejanos la consulta sobre tu código, y con gusto a la mayor brevedad posible te responderemos...