Redondear n�meros
[Funci�n para redondear n�meros a dos decimales]

Fecha: 28-08-2003 a la 1 de la ma�ana  (28/Ago/2003)
Autor: Fernando "NewHang" Rodriguez


 

Hola a todos. Estaba haciendo yo un programa de gesti�n para un empresa, y me encontr� con un peque�ito problema (debido a mi ignorancia o a no saber buscar bien por la red, vete tu a saber) a la hora de hacer las facturas. Cuando calculaba un IVA me sal�an tropocientos mil decimales (claro, una divisi�n...) �C�mo redondeaba yo? Y ah� est� el problema. Pues bien, esta es mi soluci�n. Quiz�s una tonter�a como la catedral de Le�n (de grande)

Bueno, ya sin mas, aqu� el c�digo

Private Function Redondear(ByVal Numero As String) As String
    Dim ParteEntera As String = Int(Numero)
    Dim ParteDecimal As String
    If Not (Len(Numero) - Len(ParteEntera)) = 0 Then
        ParteDecimal = Right(Numero, Len(Numero) - Len(ParteEntera) - 1)
    Else
        ParteDecimal = "00"
    End If
    Dim Num As Double
    If Len(ParteDecimal) >= 3 Then
        ParteDecimal= Left(ParteDecimal, 3)
        If Mid(ParteDecimal, 3, 1) >= "5" Then
            ParteDecimal = Left(ParteDecimal, 2)
            Num = Convert.ToDouble(ParteDecimal)
            Num = Num + 1
            If Len(CStr(Num)) = 3 Then ParteEntera = ParteEntera + 1
            ParteDecimal = Right(CStr(Num), 2)
        End If
    Else
        ParteDecimal = Left(ParteDecimal, 2) '<-- El problema estaba aqu�. Si el tercer decimal no
                                             ' empezaba por un numero mayor de 5, saltaba y retornaba
                                             ' el mismo valor de entrada.

    End If
    Redondear = ParteEntera & "," & ParteDecimal
End Function

Espero que os sirva. Yo la utilizo para pasarle n�meros, que me los devuelva redondeados a dos decimales.

Fichero con el c�digo de ejemplo (newHang_redondear.zip - 11.1 KB)


ir al ndice