PDA

Ver la Versión Completa : [ CONSULTA ] Como redondear un double tras operar


carliquiss
05/03/15, 18:44:07
Buenas veréis me gustaría redondear el resultado de una operación. Básicamente cojo dos doubles, operó con ellos y el resultado me gustaría redondearlo a 5 decimales. Me podríais explicar como implementar un método o alguna forma de hacerlo. Porque he visto un método que tienes que pasarle como parámetros un double que es el número a redondear y un int que es el número de decimales pero no se como puedo implementarlo a mi aplicación. Alguna ayuda?

kriogeN
05/03/15, 20:44:42
Así a bote pronto se me ocurre una chapuza, aunque seguro que hay alguna forma más "formal" de hacerlo.

Coges el double, lo multiplicas por 10^5 (o por el número de decimales que quieras), lo redondeas, y lo divides por 10^5

wolfcat90
06/03/15, 10:22:49
Se me ocurre una idea.
Podrías hacer un recorte de decimales así:

firstnumber = 27.72917184;
number = round(number, 6);

Te devolvería 27.729171
Luego haces:

int number2 = number*(10*6)

Y number pasaría a ser number2 y a tomar el valor de 27,729,171
El siguiente paso es tomar la ultima cifra y aproximar

#Tomo el número de cifras
int length = (int) Math.log10(number2) + 1;
#Recorto la última cifra
int x = 100/lenght;
lastnumber = number2%x;
#Compruebo si es mayor, igual o menor que 5
if (lastnumber >= 5) {
finalnumber = round(firstnumber, 5)+0.00001;
} else {
finalnumber = round(firstnumber, 5);
}

Y acabamos mostrando el número en la pantalla:

Toast.makeText(this, String.valueOf(finalnumber), Toast.LENGTH_LONG).show();

Esperemos que funcione jejeje

PD: Es un apaño pero cumple su función.
No se si habrá algún fallo en el código, si no te lo soluciona coméntamelo. Los puntos son comas y las comas puntos, a diferencia de aquí.

carliquiss
07/03/15, 00:57:01
Gracias a los dos en cuanto pueda lo pruebo

wolfcat90
07/03/15, 14:41:21
Me edito, aquí tengo la solución:

public void calcular (View v) {
Float numeroextraido = Float.valueOf(editor.getText().toString());
DecimalFormat formato = new DecimalFormat("#.#####");
Float numeroconformato = Float.parseFloat(formato.format(numeroextraido).re place(",", "."));
numeroconformato = numeroconformato * 100000;
int numero = Math.round(numeroconformato);
Float decimal = Float.valueOf(numero);
decimal = decimal / 100000;
Toast.makeText(this, String.valueOf(decimal), Toast.LENGTH_LONG).show();

}