Java 반올림 이중 문제를 해결하는 방법
복식으로 작업할 때 정밀도 부정확성이 발생하여 예상치 못한 계산 결과가 발생할 수 있습니다. 그러한 문제 중 하나는 제공된 코드 조각에 예시된 것처럼 이중 빼기 중에 발생하는 반올림입니다.
이 예에서 targetPremium에서 tempCommission을 빼면 값은 708.75가 되지만 예상 값은 708.76입니다. 이러한 차이는 정확성에 본질적인 제한이 있는 배정밀도 부동 소수점 숫자를 사용하기 때문에 발생합니다.
이 문제를 해결하고 올바른 계산을 보장하려면 java.math.BigDecimal 클래스를 사용하는 것이 좋습니다. 정확한 십진수 연산을 제공합니다. BigDecimal은 부동 소수점 연산의 정밀도를 더욱 강력하게 제어하여 이중 빼기와 관련된 반올림 오류를 제거합니다.
수정된 코드 조각에서 BigDecimal은 프리미엄에서 netToCompany 빼기를 수행하는 데 사용됩니다. 값은 877.85입니다. 이는 정확한 소수 계산을 처리하고 복식에서 발생하는 반올림 문제를 제거하는 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);
위 내용은 Java에서 이중 빼기가 부정확한 결과를 초래하는 이유는 무엇이며 BigDecimal은 이를 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!