Título: Decimales y Redondeo Publicado por: alexmacan en 17 Diciembre 2009, 23:46 pm Buenas amigos tengo un pequeño problema, pero llevo un par de dias intentandolo sacar y no soy capaz :-(
La question la divido en dos partes la PRIMERA: La que busco es un metodo que dado un Double de un Double con solo dos cifras decimales y que haya redondeado fijandose en la tercera Ejemplos: 0.99587--->0.96 127.1--->127.1 0.8649--->0.86 1.0--->1.0 y la SEGUNDA parte: dado el Double anterior pasarlo a String pero si le falta un cero en la parte decimal que lo ponga, creo que con ejemplos me explico mejor: 0.96--->0.96 127.1--->127.10 0.86--->0.86 1.0--->1.00 esto es todo, lo que yo he trabajado es el siguiente codigo, pero da fallos de programacion, del tipo, funciona bien cuando entran X.X o X.0 pero no va cuando entra un numero de formar X.XX creo que seria mejor empezar del principio antes que solucionar lo que tengo ya. Codigo de la PRIMERA parte: public static Double Redondeo(Double d,int dec){ Integer r=0; String s=d.toString(); char[] a=s.toCharArray(); //graba en r el indice del '.' for(int i=0;i>=a.length;i++){ Character q= a; if(q.equals('.'))r=i; } //busca el tercer numero despues de la coma si es igual o mayor que 5 suma 0.1 Character ex= a[r+3]; if(new Integer(ex)>=5){ d=d+0.01; } // corta todos los decimales menos los dos primeros d=LimpiaBarras.Truncar(d, 2); return d; } Nota: dec es el numero de decimales que se quieren conservar, siempra va a ser 2; Codigo de la SEGUNDA parte: public static String decimalAStringCon00(Double des,int dec){ Double d=LimpiaBarras.Redondeo(des, dec); String enString = d.toString(); Integer longitud = enString.length(); Integer indexPunto = longitud-2; Boolean necesita00 = false; Character punto = enString.charAt(indexPunto); if(punto.equals('.')){ necesita00=true; } if(necesita00){ enString += "0"; } System.out.println(enString); return enString; } No tengo apenas idea de programacion pero soy constante, espero que seais comprensibles conmigo. Un Saludo y gracias de antemano. :) Título: Re: Decimales y Redondeo Publicado por: Leyer en 18 Diciembre 2009, 07:38 am pero veo un problema que si supongamos tienes 10.2 y le vas a agregar un 0 bien pero cuando returnas como double este le quita el 0 :-X eso no seria un problema
Saludos. Título: Re: Decimales y Redondeo Publicado por: alexmacan en 18 Diciembre 2009, 20:10 pm Solucionado. Tengo que Googlear mas.
public static double redondearAlexander( double numero, int decimales ) { return Math.round(numero*Math.pow(10,decimales))/Math.pow(10,decimales); } |