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.