>Java >java지도 시간 >Java에서 Double을 합산하면 예기치 않은 값이 발생하는 이유는 무엇입니까?

Java에서 Double을 합산하면 예기치 않은 값이 발생하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-10 18:15:02958검색

Why Does Summing Doubles in Java Result in Unexpected Values?

Java 프로그램의 이상한 부동 소수점 동작

이 질문에서 사용자는 배열에서 이중 값을 합산하는 동안 이상한 동작을 경험하게 됩니다. 구체적으로 말하면 결과는 예상 합계에서 점차 벗어나게 됩니다. 이 현상은 디지털 시스템에서 부동 소수점 값이 표현되는 방식에 기인할 수 있습니다.

프로그래밍 언어에서 가장 널리 사용되는 부동 소수점 표현인 IEEE 단일 및 이중은 10진수 저장 장치가 아닌 2진 저장 장치를 사용합니다. 결과적으로 특정 소수 부분만 이진 형식으로 정확하게 표현될 수 있습니다. 이러한 분수는 다음과 같이 음의 2제곱의 합으로 표현 가능한 값으로 제한됩니다.

0.5 (2^-1)
0.125 (2^-3)
0.625 (2^-1 + 2^-3)

0.96과 같이 음의 2의 거듭제곱의 합으로 표현할 수 없는 분수에는 고유한 오류가 포함되어 있습니다. 그들의 이진 표현. 이러한 분수가 완전한 정밀도로 소수 값으로 표시되면 불가피한 근사치로 인해 원래 값과 일치하지 않습니다.

위 내용은 Java에서 Double을 합산하면 예기치 않은 값이 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.