Seraphinux
“Lloramos por el lamento de un pájaro pero no por la sangre de un pez, benditos aquellos que tienen voz.”
September 4th, 2008
Visitada: 2330 veces, 6 en este dia.

Java: Truncar o Redondear un Numero Double a n Decimales

Hace unos dias tuve la necesidad de redondear y truncar un numero Double; total que me puse “creativo” y termine usando un metodo basado en Strings… el cual si bien si me funcionaba tenia un sinfin de “excepciones” o mejor dicho “particularidades”… que si era negativo, que si era mayor a tal numero etc. Eso me llevo a probar otra forma pero basado en DecimalFormat, la cual en la mayoria de los casos terminaba redondeando.
Para no hacerlo muy largo este post, les dejo los metodos que ensamble apartir de pedazos de codigo que encontre en la red.

Redondear un numero a n Decimales


public double Redondear(double nD, int nDec)
{
  return Math.round(nD*Math.pow(10,nDec))/Math.pow(10,nDec);
}

Truncar un numero a n Decimales


public double Truncar(double nD, int nDec)
{
  if(nD > 0)
    nD = Math.floor(nD * Math.pow(10,nDec))/Math.pow(10,nDec);
  else
    nD = Math.ceil(nD * Math.pow(10,nDec))/Math.pow(10,nDec);

  return nD;
}

Ya saben cualquier duda comentario o sugerencia la pueden dejar como comentario; espero les sirvan estos metodos, los cuales probe y efectivamente me funcionaron.

Posts Relacionados

3 Respuestas to “Java: Truncar o Redondear un Numero Double a n Decimales”

  1. Generalmente yo uso la calse DecimalFormat especificando el formato que deseo.

    DecimalFormat format = new DecimalFormat(”#0.00″);

  2. @miguelucho042:
    Te lo digo por experiencia… no funciono :S Si no mal recuerdo termina redondeandote los decimales (para el caso del redondeo bien podria ser una opcion) pero para el truncamiento no mas no.

    Saludos!!!

  3. import java.io.*;
    class Redondeo{
    public static void main(String args[])throws IOException{
    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    double d=0.0;
    System.out.print(”Redondear al siguiente: “);
    d=Double.parseDouble(br.readLine());
    System.out.println(Math.ceil(d));
    System.out.print(”Redondear al anterior: “);
    d=Double.parseDouble(br.readLine());
    System.out.println(Math.floor(d));
    System.out.print(”Redondeo normal: “);
    d=Double.parseDouble(br.readLine());
    System.out.println(Math.rint(d));
    }
    }

Dejanos un comentario.