Visual Basic Foro
Programación => Visual Basic .NET / C# => Mensaje iniciado por: softmania en Octubre 17, 2013, 09:50:10 pm
-
Puede ser de ayuda en sistema de gestión contable ...
Es una función que utilizaba visual basic 6, pero unos mínimos retoques y quedo funcional para NET
Espero que les sea útil
Enum Tipo_Redondeo
arriba = 0
abajo = 1
cercano = 2
End Enum
Public Function fRedondeo(ByVal dblValor As Double, ByVal dblSalto_Redondeo As Double, ByVal Tipo As Tipo_Redondeo) As Double
'por softmania
Dim dblReferencia As Double
Dim dblResultado As Double
Dim boolSigno As Boolean
'se verifica el signo para despúes asignarlo al resultado
If dblValor < 0 Then boolSigno = True
dblValor = Math.Abs(dblValor)
'cargamos la variable que servirá de referencia
dblReferencia = dblValor - Int(dblValor)
'Verificamos que el valor requiera redondeo decimal
If dblReferencia = 0 Then fRedondeo = dblValor : Exit Function
Select Case Tipo
Case 0
'redondeo decimal hacia arriba
If dblReferencia <= dblSalto_Redondeo Then
dblResultado = Int(dblValor) + dblSalto_Redondeo
Else
dblResultado = dblReferencia / dblSalto_Redondeo
dblResultado = -Int(dblResultado * (-1))
dblResultado = Int(dblValor) + (dblResultado * dblSalto_Redondeo)
End If
Case 1
'redondeo decimal hacia abajo
Select Case dblSalto_Redondeo
Case Is > dblReferencia
dblResultado = Int(dblValor)
Case Is = dblReferencia
dblResultado = Int(dblValor) + dblSalto_Redondeo
Case Is < dblReferencia
dblResultado = Int(dblReferencia / dblSalto_Redondeo)
dblResultado = Int(dblValor) + (dblSalto_Redondeo * dblResultado)
End Select
Case 2
'redondeo decimal por proximidad de valor
dblResultado = Math.Round(dblReferencia / dblSalto_Redondeo)
dblResultado = Int(dblValor) + (dblSalto_Redondeo * dblResultado)
End Select
If boolSigno = True Then
fRedondeo = dblResultado * (-1)
Else
fRedondeo = dblResultado
End If
End Function
salu2 a todos
-
Okas se mira bien, tendremos que probarla, Gracias :D