Que tal:
Comparto estas dos funciones que forman parte de un proyecto en el que estoy trabajando, tengo pensado liberar más adelante todas las clases que lo forman bajo licencia GPL/BSD de manera que se puedan usar estas sin problemas en proyectos comerciales (abiertos o cerrados) o no (respetando las licencias por supuesto). Se trata entonces de un par de funciones para redondear un número hacia arriba o hacia abajo, por ejemplo si tenemos el número 2.05 la función roundtoup regresa 3, si usamos la funcion roundtodown retorna 2.
Espero les sea de utilidad
'#### Purpose: Return round to up number
'#### Created date: 28/01/2014
'#### Created by username: Juan Manuel Mar Hdz.
'#### Last modified date: 28/01/2014
'#### Last modified username: Juan Manuel Mar Hdz.
Public Function roundtoUp(number As Double)
Dim mystr As String, res As String = (number / 2).ToString().Trim
If res.IndexOf(".") >= 0 Then
Try
mystr = number.ToString().Trim().Substring(0, number.ToString().Trim().IndexOf(".")).Trim
Catch exp As Exception
mystr = number.ToString().Trim
End Try
Return (Double.Parse(mystr.Trim)) + 1
Else
Return number
End If
End Function
'#### Purpose: Return round to down number
'#### Created date: 28/01/2014
'#### Created by username: Juan Manuel Mar Hdz.
'#### Last modified date: 28/01/2014
'#### Last modified username: Juan Manuel Mar Hdz.
Public Function roundtoDown(number As Double)
Dim mystr As String, res As String = (number / 2).ToString().Trim
If res.IndexOf(".") >= 0 Then
Try
mystr = number.ToString().Trim().Substring(0, number.ToString().Trim().IndexOf(".")).Trim
Catch exp As Exception
mystr = number.ToString().Trim
End Try
Return Double.Parse(mystr.Trim)
Else
Return number
End If
End Function