2010-02-16 5 views

Respuesta

8

364/365 realiza la división de enteros (trunca el decimal).

Pruebe double answer = 364.0/365; para forzarlo a realizar la división de punto flotante.

Algo así como:

double days_in_year = 365; 
double answer = 364/days_in_year; 

funcionaría así, ya que uno de los operandos no es un entero.

+0

Hey gracias. Eso fue realmente simple, ¡pero ahora lo sé! – Jeff

+0

Feliz de ayudar. :) – Sapph

2

Necesita hacer doble división. En este momento, Java lo interpreta como una división entera y devuelve el int truncado.

Lo que necesita es:

double answer = 364/365.0; 

o

double answer = 364/(double) 365; 
5

Usted está tomando un tipo int (364) y dividiendo por otro tipo int (365) - la respuesta va a ser un int. Esto se almacena en una respuesta de tipo doble. Se podría hacer lo siguiente:

double answer = 364d/365d; 

Más información aquí:

http://mindprod.com/jgloss/division.html

+3

+1 para usar el sufijo d, que es mucho más agradable (en mi humilde opinión) que agregar un .0 al final o usar un reparto explícito, como sugieren todas las otras respuestas. – Cowan

0

La razón es que el tipo predeterminado de literales enteros en Java es int y todo el resultado de todo int arithemetic basado es tipo devuelto a int. Por lo tanto, aunque su respuesta es 0,997, cuando se typecasted vuelta se convierte en 0:

(int)0.997 = 0 

para que pueda hacer la siguiente manera:

364.0/365.0 

o

((float)364)/365 
Cuestiones relacionadas