2014-04-05 5 views
0

Java 1.6을 사용 중입니다. 최종 확인 = 3/4; System.out.println (check);Java :이 변수가 왜 0으로 나오나요?

콘솔이 표시됩니다. 0.

왜 이런 일이 발생합니까? 0.75에서 나오면 안 되나요?

double check = 3.0/4; 

을하고 그것은 작동합니다 :

+3

로 변경 ** 정수 ** 부분을 '이중'으로 변환. – m0skit0

+6

나는 단지 며칠 동안 아무도이 질문을하지 않았다고 생각했다. –

답변

2

것을 확인합니다. 3/4은 정수 구분이며 값이 0이므로 0이 있습니다.

0

둘 다 정수이므로 결과도 정수가됩니다.

캐스트 같은 이중에 어느 하나

double check = (double)3/4; 
0

수행하여

3/4 

당신이 정수 나누기을 수행, 3 년 이후 4int 상수가 아닌 double들입니다. 따라서 결과는 int입니다. 하지만 double에 할당하면 부서의 결과는 이며 double으로 승격됩니다. 그러나 정수 나누기가 0을 생성했기 때문에이 시점에서 너무 늦었습니다! 이 경우, 4 자동으로 double으로 승격되기 때문에

3.0/4 

이 원하는 결과를 달성하고, 분할의 결과도 double 될 것입니다 :

당신은 할 필요가있다.

는 무슨 완벽하게 확인하기 위해 당신은 대칭을 좋아하는 경우에, 당신은 또한 쓸 수 있습니다 :

3.0/4.0 
0

을 당신은 정수를 나누어 항상을 산출 두 INT 값의 자바 부문을 double.In하는 결과를 할당하는 int.
double check = 3/4;double check = 3.0/4;