Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 05/03/15, 18:44:07
Avatar de carliquiss
carliquiss carliquiss no está en línea
DroidMaster en Youtube
Mensajes: 1,730
 
Fecha de registro: dic 2014
Mensajes: 1,730
Modelo de smartphone: Mi Pad 4 / Mi Pad 5 / Lenovo Legion Y700
Versión de ROM: Android One Stock 9.X / Lineage / MIUI / ZUI
Tu operador: Movistar
Mencionado: 49 comentarios
Tagged: 0 hilos
Como redondear un double tras operar

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?
Responder Con Cita


  #2  
Viejo 05/03/15, 20:44:42
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
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
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 06/03/15, 10:22:49
Avatar de wolfcat90
wolfcat90 wolfcat90 no está en línea
Desarrollador
Mensajes: 445
 
Fecha de registro: jun 2012
Mensajes: 445
Modelo de smartphone: Samsung Galaxy Trend Plus
Versión de ROM: Stock
Tu operador: Movistar
Mencionado: 4 comentarios
Tagged: 1 hilos
Se me ocurre una idea.
Podrías hacer un recorte de decimales así:
Código:
firstnumber = 27.72917184;
number = round(number, 6);
Te devolvería 27.729171
Luego haces:
Código:
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
Código:
#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:
Código:
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í.

Última edición por wolfcat90 Día 06/03/15 a las 10:31:15
Responder Con Cita
Gracias de parte de:
  #4  
Viejo 07/03/15, 00:57:01
Avatar de carliquiss
carliquiss carliquiss no está en línea
DroidMaster en Youtube
Mensajes: 1,730
 
Fecha de registro: dic 2014
Mensajes: 1,730
Modelo de smartphone: Mi Pad 4 / Mi Pad 5 / Lenovo Legion Y700
Versión de ROM: Android One Stock 9.X / Lineage / MIUI / ZUI
Tu operador: Movistar
Mencionado: 49 comentarios
Tagged: 0 hilos
Gracias a los dos en cuanto pueda lo pruebo
Responder Con Cita
  #5  
Viejo 07/03/15, 14:41:21
Avatar de wolfcat90
wolfcat90 wolfcat90 no está en línea
Desarrollador
Mensajes: 445
 
Fecha de registro: jun 2012
Mensajes: 445
Modelo de smartphone: Samsung Galaxy Trend Plus
Versión de ROM: Stock
Tu operador: Movistar
Mencionado: 4 comentarios
Tagged: 1 hilos
Me edito, aquí tengo la solución:
Código:
public void calcular (View v) {
Float numeroextraido = Float.valueOf(editor.getText().toString());
DecimalFormat formato = new DecimalFormat("#.#####");
Float numeroconformato = Float.parseFloat(formato.format(numeroextraido).replace(",", "."));
    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();

}
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 20:24:03 (GMT +1)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007