Java의 정수 나누기 결과가 0.0인 이유는 무엇입니까?
Java에서 두 정수를 나눌 때 결과가 예상과 다른 경우가 많습니다.
int totalOptCount = 500; int totalRespCount = 1500; float percentage = (float) (totalOptCount / totalRespCount);
이 경우 백분율은 0.33이 될 것으로 예상됩니다. (또는 0.333을 반올림). 그러나 실제로 0.0을 반환한다는 사실에 놀랄 수도 있습니다. 왜 그럴까요?
구조에 대한 변환 순서
예상치 못한 결과가 나오는 이유는 Java가 계산을 수행하는 순서에 있습니다. 두 개의 정수를 나누면 Java는 자동으로 이를 두 배로 변환합니다. 그러나 이 변환은 나누기가 수행될 때까지 발생하지 않습니다. 따라서 위의 예에서 계산은 실제로 다음과 같이 수행됩니다.
double percentage = totalOptCount / totalRespCount;
그 결과 double 값은 0.0이 됩니다. 이 문제를 해결하려면 나누기를 수행하기 전에 피연산자 중 하나를 float 또는 double로 명시적으로 변환해야 합니다.
float percentage = ((float) totalOptCount) / totalRespCount;
이제 float로의 변환이 먼저 발생하고 float에서 나누기가 수행됩니다. 결과적으로 올바른 부동 소수점 값은 0.333333이 됩니다.
10진수 형식 지정 정밀도
올바른 결과를 얻었으면 특정 소수 정밀도로 형식을 지정할 수 있습니다. String.format() 메서드를 사용하여 이 작업을 수행할 수 있습니다.
String str = String.format("%2.02f", percentage);
이렇게 하면 백분율 변수가 소수점 이하 두 자리의 문자열로 형식화되어 값이 00.33이 됩니다.
위 내용은 Java의 정수 나누기가 소수 결과 대신 0.0을 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!