Java 이중 계산의 정밀도 문제: 사례 연구
Java에서 배정밀도 부동 소수점 산술을 처리할 때 문제가 발생합니다. 코드 조각에 설명된 것처럼 반올림된 값을 빼면 고유한 정밀도 제한으로 인해 예상치 못한 결과가 발생할 수 있습니다.
구체적으로 문제는 일련의 계산에서 발생합니다.
dCommission의 예상 결과는 877.85이지만 누적 반올림으로 인해 결과가 잘립니다.
정밀한 야수 길들이기: BigDecimal 소개
이러한 정밀도 문제를 해결하기 위해 Java는 임의 정밀도 십진수 연산을 제공하는 java.math.BigDecimal 클래스를 제공합니다. .
이 경우 코드는 다음과 같이 수정됩니다. 다음과 같습니다:
import java.math.BigDecimal; BigDecimal premium = BigDecimal.valueOf("1586.6"); BigDecimal netToCompany = BigDecimal.valueOf("708.75"); BigDecimal commission = premium.subtract(netToCompany); System.out.println(commission + " = " + premium + " - " + netToCompany);
BigDecimal을 사용하면 결과가 정확하게 계산되어 표시됩니다.
877.85 = 1586.6 - 708.75
결론
정밀도에 민감한 경우 Java 계산에서는 부동 소수점 연산의 함정을 피하기 위해 BigDecimal을 활용하는 것이 중요합니다. 임의의 정밀도 기능을 수용함으로써 개발자는 위에 설명된 것과 같은 복잡한 시나리오에서도 정확하고 신뢰할 수 있는 결과를 보장할 수 있습니다.
위 내용은 Java의 'double' 유형이 재무 계산에서 부정확한 결과를 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!