Visual Basic Foro

Programación => Visual Basic .NET / C# => Mensaje iniciado por: softmania en Octubre 17, 2013, 09:50:10 pm

Título: FUNCIÓN PARA REDONDEAR VALORES DECIMALES CON SALTOS DEFINIDOS
Publicado 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

Citar
Espero que les sea útil

Código: [Seleccionar]
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

Título: Re:FUNCIÓN PARA REDONDEAR VALORES DECIMALES CON SALTOS DEFINIDOS
Publicado por: wolf_kof en Octubre 30, 2013, 06:45:36 pm
Okas se mira bien, tendremos que probarla, Gracias :D