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)