[RIM] Redondeo de float y double en 4.5

La clase MathUtilites disponible en el framework the Blackberry 4.5 no tiene disponible el método round() que permitiria redondear un número flotante o double. A diferencia de floor() o ceil(), round toma un valor decimal y si es mayor o igual a  .5 lo redondea al siguiente entero, en caso contrario al entero anterior. Esta “deficiencia” se discutió en los foros oficiales de blackberry: http://supportforums.blackberry.com/t5/Java-Development/Math-round-and-Math-random/m-p/206288Y una de las respuestas en muy interesante y que fue marcada como la solucion a esto. Es simplemente sumar a la variable float o double 0.5, asi:

public static int round(float f)
{
    return (int)(f + 0.5F);
}
public static long round(double d)
{
    return (long)(d + 0.5D);
}

Como verán, éste corrimiento hace que cualquier valor cuyo valor decimal sea inferior a 0.5 se mantenga en el mismo entero. Por ejemplo 3.2 se convertiria en 3.7 y al hacer casting a long o int, el valor devuelto seria 3. Pero cuando el valor decimal es superior o igual a 0.5 todo el valor se mueve al siguiente entero. Por ejemplo 3.7 seria 4.2 por lo tanto el valor “redondeado” seria 4. Esta solución me parecio interesante por su simpleza, aunque uno podria hacer su propia version con “if-else” para hacer el mismo comportamiento.