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

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

Dreamweaver Mac版
시각적 웹 개발 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음
