Java 프로그램에서 0.04 값을 자신에게 25번 더하는 루프는 6번째와 10번째 반복 사이에서 예상치 못한 결과를 생성합니다. 예상대로 0.04씩 증가하는 대신 합계가 0.24000000000000002 및 0.39999999999999997과 같은 잘못된 값으로 반올림됩니다.
이 이상한 동작은 부동 소수점 연산의 특성 때문입니다. 부동 소수점 값은 이진 부동 소수점 형식을 사용하여 표현되는데, 이는 많은 소수 부분을 정확하게 나타낼 수 없습니다. 대신 값을 2의 음수 거듭제곱의 합으로 저장합니다.
예를 들어 0.5는 2^-1로, 0.125는 2^-3으로 정확하게 표현할 수 있습니다. 그러나 소수점 값 0.96은 음의 2제곱의 합으로 정확하게 표현할 수 없기 때문에 부동 소수점 변수에 저장하면 약간의 반올림 오류가 발생합니다.
부동 소수점 값에 대해 산술 연산을 수행할 때, 이러한 반올림 오류가 누적되어 합계가 예상 값에서 벗어날 수 있습니다. 이것이 0.04를 25번 반복한 결과의 합이 0.04의 정확한 정수배로 유지되지 않는 이유입니다.
위 내용은 Java에서 0.04를 합산하는 루프에서 예상치 못한 반올림 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!