> Java > java지도 시간 > 백분율을 계산할 때 Java의 정수 나누기가 예기치 않은 결과를 생성하는 이유는 무엇입니까?

백분율을 계산할 때 Java의 정수 나누기가 예기치 않은 결과를 생성하는 이유는 무엇입니까?

DDD
풀어 주다: 2025-01-02 18:35:37
원래의
195명이 탐색했습니다.

Why Does Integer Division in Java Produce Unexpected Results When Calculating Percentages?

Java의 정수 나누기 이해

Java에서 정수 값(이 경우 long)의 나누기는 정수 산술 규칙을 따르며 결과적으로 정수가 됩니다. 정수를 나눌 때 결과는 음의 무한대로 반올림됩니다. 특히 백분율을 계산하려고 할 때 예상치 못한 결과가 발생할 수 있습니다.

이 문제를 해결하려면 나누기를 수행하기 전에 입력 정수 중 하나 이상을 double(부동 소수점 수)로 변환해야 합니다. 이는 나눗셈을 부동 소수점 연산으로 강제하여 소수 결과를 생성합니다.

double completed = 25000;
double total = 50000;

double percentage = completed / total; // Prints 0.5

System.out.println(percentage); // Prints 0.5
로그인 후 복사

입력 중 하나를 double로 캐스팅하면 나눗셈 결과도 double이 되어 예상되는 백분율 값을 제공합니다.

처음 시도한 대로(완료/전체) 결과를 변환하는 것만으로는 충분하지 않다는 점에 유의하는 것이 중요합니다. 그 시점에서 정수 나누기가 이미 발생했습니다. 입력을 변환하면 처음부터 적절한 부동 소수점 연산이 사용됩니다.

위 내용은 백분율을 계산할 때 Java의 정수 나누기가 예기치 않은 결과를 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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