> Java > java지도 시간 > Java의 정수 나누기가 소수 결과 대신 0.0을 생성하는 이유는 무엇입니까?

Java의 정수 나누기가 소수 결과 대신 0.0을 생성하는 이유는 무엇입니까?

Susan Sarandon
풀어 주다: 2024-12-26 02:18:14
원래의
858명이 탐색했습니다.

Why Does Integer Division in Java Produce 0.0 Instead of a Decimal Result?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿