Java 1.6을 사용 중입니다. 최종 확인 = 3/4; System.out.println (check);Java :이 변수가 왜 0으로 나오나요?
콘솔이 표시됩니다. 0.
왜 이런 일이 발생합니까? 0.75에서 나오면 안 되나요?
double check = 3.0/4;
을하고 그것은 작동합니다 :
Java 1.6을 사용 중입니다. 최종 확인 = 3/4; System.out.println (check);Java :이 변수가 왜 0으로 나오나요?
콘솔이 표시됩니다. 0.
왜 이런 일이 발생합니까? 0.75에서 나오면 안 되나요?
double check = 3.0/4;
을하고 그것은 작동합니다 :
것을 확인합니다. 3/4
은 정수 구분이며 값이 0
이므로 0
이 있습니다.
둘 다 정수이므로 결과도 정수가됩니다.
캐스트 같은 이중에 어느 하나
double check = (double)3/4;
수행하여
3/4
당신이 정수 나누기을 수행, 3
년 이후 4
이 int
상수가 아닌 double
들입니다. 따라서 결과는 int
입니다. 하지만 double
에 할당하면 부서의 결과는 이며 double
으로 승격됩니다. 그러나 정수 나누기가 0을 생성했기 때문에이 시점에서 너무 늦었습니다! 이 경우, 4
자동으로 double
으로 승격되기 때문에
3.0/4
이 원하는 결과를 달성하고, 분할의 결과도 double
될 것입니다 :
당신은 할 필요가있다.
는 무슨 완벽하게 확인하기 위해 당신은 대칭을 좋아하는 경우에, 당신은 또한 쓸 수 있습니다 :
3.0/4.0
을 당신은 정수를 나누어 항상을 산출 두 INT 값의 자바 부문을 double.In하는 결과를 할당하는 int.
double check = 3/4;
을 double check = 3.0/4;
로 변경 ** 정수 ** 부분을 '이중'으로 변환. – m0skit0
나는 단지 며칠 동안 아무도이 질문을하지 않았다고 생각했다. –