Foros del Web » Programación para mayores de 30 ;) » Java »

usar los decimales de un numero?

Estas en el tema de usar los decimales de un numero? en el foro de Java en Foros del Web. Hola! Bueno, pos sigo haciendo tareas ;) Esta vez tengo que sacar el promedio de la edad con respecto a los anyos introducidos, explico: Ingrese ...
  #1 (permalink)  
Antiguo 01/11/2010, 14:58
 
Fecha de Ingreso: diciembre-2009
Ubicación: Linz
Mensajes: 48
Antigüedad: 14 años, 4 meses
Puntos: 1
usar los decimales de un numero?

Hola!

Bueno, pos sigo haciendo tareas ;)

Esta vez tengo que sacar el promedio de la edad con respecto a los anyos introducidos, explico:

Ingrese un anyo: 1979
Ingrese un anyo: 1974
Ingrese un anyo: 1976
Ingrese un anyo: 1981

si se ingresa un 0, el programa debe sacar el promedio de los anyos, meses y dias de todas las edades, en este caso sería 32 anyos y 6 meses.

Lo tengo ya casi todo hecho, mi problema es que no se como hacer para utilizar el decimal de un número.

En mi ejemplo, el restulado del promedio es 32,5 pero claro, tengo que utilizar ese decimal (x) para "12*x/100" para saber cuantos meses tengo y luego utilizar el decimal del último resultado para los dias.

En fin, que estoy bastante perdido con eso =/

Mi código es este:
http://pastebin.cholito.org/pastebin.php?show=12348

Muchas gracias por la ayuda!!

Alejandro
  #2 (permalink)  
Antiguo 02/11/2010, 04:38
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: usar los decimales de un numero?

pues si te devuelve un numero separado por una coma (a/b = xx,yyy) conviertes a String y haces split(",") del String. Coges el segundo numero y haces la equivalencia 10 = 12 meses; tuNumero = x --> x*1,2 = meses. Finalmente tienes que hacer la equivalencia con los dias del mes, es decir, que el decimal que te quede debes compararlo con 365/12 = 10; tuNumeroDias = y; y*(365/120) = dias

:/
  #3 (permalink)  
Antiguo 02/11/2010, 09:39
 
Fecha de Ingreso: diciembre-2009
Ubicación: Linz
Mensajes: 48
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: usar los decimales de un numero?

Hola Fuzzylog!

Muchas gracias por tu ayuda, es justo lo que estaba buscando ;)

Pero ahora me viene la duda de cómo coger el segundo grupo de números, usando split, sería algo asi:

String str = Float.toString(anyo);
anyo.split(",");

pero luego ya me quedo de piedra =/ (he estado buscando en google...)

Alguna pista? ;)
  #4 (permalink)  
Antiguo 02/11/2010, 10:28
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: usar los decimales de un numero?

Prueba con esto

float p = 24.5f; // Por ejemplo - En tu caso usa tu número
String ps = String.valueOf(p);
String[] psSplitted = ps.split(".");
String psDecimal = psSplitted[1]; // 2º elemento
System.out.println(psDecimal); // comprueba que te escribe 5 y no 5f
// Si te escribe 5
int decimal = Integer.valueOf(psDecimal).intValue(); // parsea de String a int

--> Si te escribe 5f yo que tú trataría de usar un double mejor que un float, ya que los float son bastante peculiares en su comportamiento
  #5 (permalink)  
Antiguo 02/11/2010, 13:55
 
Fecha de Ingreso: diciembre-2009
Ubicación: Linz
Mensajes: 48
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: usar los decimales de un numero?

Hola!

Cada vez voy avanzando más y más. Pero ahora me he topado con este problema. Mi código es este:
Código Javascript:
Ver original
  1. String stYear=String.valueOf(temp);
  2. String[] stYearSplitted = stYear.split(".");
  3. String stDecimal = stYearSplitted[1];
  4. System.out.println(stDecimal);
  5. int decimal = Integer.valueOf(stDecimal).intValue();

pero me da este error

Código:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
	at yearaverages.main(yearaverages.java:45)
la linea 45 es
Código:
String stDecimal = stYearSplitted[1];
y bueno, ahi me quedo jijiji
  #6 (permalink)  
Antiguo 02/11/2010, 14:36
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: usar los decimales de un numero?

Lo primero hubiese sido hacer un

System.out.println(stYear);

para ver que valor estás spliteando. Solo tendrías que hacer eso cuando el stYear es decimal y tiene los números separados por un punto. Si es por una coma tienes que poner el split(",") en vez de split(".") y si no te van a venir decimales solo tienes que hacer esa movida para cuando te vengan los decimales... así que lo controlarías para stYearSplitted.length() --> Si es 1 es que no vienen decimales y no tienes que hacer nada, si es 2 entonces vienen decimales y tendrías que obtener el decimal aparte.
  #7 (permalink)  
Antiguo 02/11/2010, 15:16
 
Fecha de Ingreso: diciembre-2009
Ubicación: Linz
Mensajes: 48
Antigüedad: 14 años, 4 meses
Puntos: 1
Respuesta: usar los decimales de un numero?

System.out.println(stYear);

me tira el valor promedio en plan 28.25 pero el siguiente print me da este error: (antes era con 1)

System.out.println(stYearSplitted[0]);

Código:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
	at yearaverages.main(yearaverages.java:46)
  #8 (permalink)  
Antiguo 03/11/2010, 05:11
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: usar los decimales de un numero?

Me parece extrañísimo.

Mira cual es el valor que arroja stYearSplitted.length(). Para que de esa excepción la longitud de stYearSplitted debe ser cero.

Edito... después de pensarlo bien, me da en el hocico que el "." es un carácter especial y que para que funcione bien el split debes "escapar" el carácter.

String[] stYearSplitted = stYear.split("\\."); // Si no va bien con las 2 barras prueba con una sola pero creo que es así
  #9 (permalink)  
Antiguo 03/11/2010, 10:02
 
Fecha de Ingreso: noviembre-2010
Mensajes: 19
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: usar los decimales de un numero?

Por que tanta vuelta para sacar decimales de un numero, aqui un ejemplo sencillo:

Código Java:
Ver original
  1. public static void main(String arg[]){
  2.         double x = 2.54;
  3.        
  4.         int y = (int) x;
  5.        
  6.         System.out.println(x - y);
  7.     }

me avisas si te sirve

Última edición por maframaran; 03/11/2010 a las 10:11
  #10 (permalink)  
Antiguo 04/11/2010, 02:11
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: usar los decimales de un numero?

Es una buena alternativa teniendo en cuenta que mi método estaba pensado para un único decimal y que si eran más le obligaría a dividir. Las equivalencias se harían entonces multiplicando por 10 las anteriores (para el caso de usar 0,xyz).

12·x = nº meses

(365/12)·y = nº días

Aunque como no se pasa por aquí creo que ya lo habrá resuelto :D
  #11 (permalink)  
Antiguo 04/11/2010, 06:59
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: usar los decimales de un numero?

Una variación sobre la versión de maframaran, pero más explícita:

Código Java:
Ver original
  1. public static void main(String arg[]){
  2.         double x = 2.54;   
  3.         double parteEntera = Math.ceil(x);
  4.         double parteDecimal = x - parteEntera;
  5.     }

Para la historia, ya que el problema está resuelto.
S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.

Etiquetas: numero
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:08.