Foros del Web » Programación » Java »

el % en JAVA

Estas en el tema de el % en JAVA en el foro de Java en Foros del Web. que tal amigos, como puedo optener el porcentaje en JAVA, alguien me puede hechar la mano? la operacion normal que haria seria esta: % = ...
  #1 (permalink)  
Antiguo 24/10/2006, 12:13
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.271
Antigüedad: 9 años
Puntos: 3
Pregunta el % en JAVA

que tal amigos, como puedo optener el porcentaje en JAVA, alguien me puede hechar la mano? la operacion normal que haria seria esta:

% = (1/2) * 100

pero obvio esto no me sirve, alguien sabe como?
__________________
Wow! No se que decir...
  #2 (permalink)  
Antiguo 24/10/2006, 14:42
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 10 años, 11 meses
Puntos: 51
Eummm... es obvio que no te sirve por...¿? ¿Y esa operación se supone que calcula?
  #3 (permalink)  
Antiguo 24/10/2006, 15:18
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.271
Antigüedad: 9 años
Puntos: 3
ok, esa operacion me calcula el porcentaje, el valor 2 es el maximo de unidades, y el valor 1 las unidades que se tienen actualmente...no me sirve por que, lo que esta de ejemplo me regresa un valor cero, pero me tendria que dar .5, eso ya seria residuo, pero no se como sacarlo....que me arrroje el .5 y no un cero...
__________________
Wow! No se que decir...
  #4 (permalink)  
Antiguo 24/10/2006, 16:22
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.385
Antigüedad: 10 años, 2 meses
Puntos: 53
lo que pasa es que ahi se esta ejecutando una divicion de enteros, entonces, el resultado arrojado es un entero, entonces 1/2 = 0.5, pero solo te esta regresando el entero, un entero por otro entero regresa un entero, por eso 0*100 es 0 (Aparte de que 0*x = 0).

bueno, lo que tienes que ahcer es hacer la divicion de double, algo asi

System.out.println("%="+((1.0/2.0)*100));
% = 50.0

o bien, puedes hacer esto:

double total = 2;
double actual = 1;
System.out.println("%="+((actual/total)*100));

have funnnnnnnnn
  #5 (permalink)  
Antiguo 25/10/2006, 02:53
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 10 años, 11 meses
Puntos: 51
Ah, ok. Ya te ha dado stock la solucion. De todas formas, un consejo. Habitualmente este tipo de formulas se "modifican" de forma que primero se hagan las multiplicaciones y luego las divisiones, ya que al dividir ocurre un redondeo y entonces va "acumulandose" un error. Si multiplicas primero, el redondeo ocurre pero se minimiza el error acumulado.

Y para tener precision absoluta, en vez de tipos primitivos hay que usar las clases BigInteger y BigDecimal.

S!
  #6 (permalink)  
Antiguo 25/10/2006, 12:38
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.271
Antigüedad: 9 años
Puntos: 3
Gracias, me ayudaste mucho!
__________________
Wow! No se que decir...
  #7 (permalink)  
Antiguo 25/10/2006, 12:44
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.443
Antigüedad: 9 años, 11 meses
Puntos: 421
Hola:

Una tontería que descubrí el otro día y quizás ayude. Si usamos una clase DecimalFormat para escribir en pantalla y en la máscara ponemos algo así "##.##%", cuando metamos el número para sacar el String, automáticamente lo multiplica por 100. Esto está bastante bien, porque podemos hacer las cuentas en tanto por uno

double valor = 1.0/2.0;

y lo de *100 se hace solo y de forma automática cuando queramos sacar los resultados por pantalla. Ahorra andar arrastrando los 100 por todo el código.

Sed buenos.
__________________
Apuntes Java
Wiki de Programación
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 21:59.
SEO by vBSEO 3.3.2