2011-12-29 26 views
15

Estoy tratando de dividir dos enteros y multiplicar por 100 pero sigue dando solo 0 o 100. ¿Alguien puede ayudarme?Dividir dos enteros en Java me da 0 o 100?

int x= (a/b)*100; 

si un fue de 500 y B era 1000 me daría 0. La única vez que me dará 100 es si a> = b. ¿Cómo puedo arreglar esto?

Gracias

+0

Por favor, explique el resultado esperado. – Vincent

Respuesta

36

Lo que podría hacer es obligarlo a dividir a y b como dobles así:

int x = (int) (((double) a/(double) b) * 100); 
+0

A este le falta un molde para 'int'. De lo contrario, no se compilará. – Howard

+0

esto funcionó perfectamente gracias :) – arberb

+0

Por favor, acepte como respuesta, ya que planteará esta respuesta a la parte superior y ayudar a los demás, gracias. – ridecar2

6

Parece que no escribe correctamente sus variables; dos divisiones enteras resultan en un entero, no en un flotante o doble. Por ejemplo:

(int)3/(int)5 = 0 
(float)3/(float)5 = 0.6 
9

división de enteros no tiene fracciones, así 500/1000 = 0,5 (es decir no entero!) Que obtiene trunca a entero 0. Es probable que desee

int x = a * 100/b; 
+0

Pero tenga en cuenta que este enfoque podría desbordarse. – Howard

+0

a menos que inicies tus entradas por primera vez – njzk2

2

Prueba esto:

int x = a * 100/b; 

la idea es, usted es el primero haciendo a/b, y porque es una operación número entero, que va a redondear el resultado a 0. Haciendo a * 100 primero debería arreglarlo.

+1

Pero ten en cuenta que este enfoque podría desbordarse. – Howard