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
September 4th, 2008 at 3:27 pm
Generalmente yo uso la calse DecimalFormat especificando el formato que deseo.
DecimalFormat format = new DecimalFormat(”#0.00″);
September 4th, 2008 at 5:02 pm
@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!!!
December 1st, 2008 at 5:30 am
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));
}
}