>Java >java지도 시간 >BigDecimal이란 무엇입니까? BigDecimal 인스턴스 생성

BigDecimal이란 무엇입니까? BigDecimal 인스턴스 생성

零下一度
零下一度원래의
2017-06-25 10:40:304139검색

float 및 double 유형은 주로 과학 계산 및 공학 계산을 위해 설계되었으며 이진 부동 소수점 연산을 수행하고 광범위한 값에 대해 보다 정확한 대략적인 계산을 제공하도록 신중하게 설계되었습니다. 그러나 완전히 정확한 결과를 제공하지는 않으므로 정확한 결과가 필요한 경우에는 사용해서는 안 됩니다. 일반적으로 비즈니스 계산에서는 정확도 요구 사항이 높은 값을 계산하기 위해 BigDecimal이 필요한 경우가 많습니다. 예를 들어

  0.07 + 0.020.58 - 0.421.005 * 10015.1 / 1000

어떤 환경에서도 코드를 이진 기계어 코드로 변환해야 기계가 이를 인식할 수 있습니다. 부동 소수점 숫자를 직접 출력할 경우 정확도가 높아집니다. 유지되며, 부동 소수점 수를 처리할 때 계산 후 정확도가 떨어질 수 있으며, 이 경우 BigDecimal을 사용하여 계산해야 합니다.

1. BigDecimal 만들기

BigDecimal에는 배정밀도 부동 소수점 숫자를 매개변수로 사용하는 생성자가 있습니다. 실제로 계산을 위해 부동 소수점 숫자가 전달되면 정밀도가 손실됩니다.

  =  BigDecimal(1.005=  BigDecimal(100=  BigDecimal("1.005"=  BigDecimal("100"100.49999999999998934185896359849721193313598632812500
100.500

하지만 문자열을 전달하면 정확한 결과를 얻을 수 있고 BigDecimal.valueOf(double val)도 정확한 결과를 얻을 수 있습니다. 아래의 BigDecimal.valueOf(double val) 소스를 보시면 됩니다

public static BigDecimal valueOf(double val) {// Reminder: a zero double returns '0.0', so we cannot fastpath// to use the constant ZERO.  This might be important enough to// justify a factory approach, a cache, or a few private// constants, later.return new BigDecimal(Double.toString(val));
    }

이 메소드는 먼저 매개변수를 String 유형으로 변환한 후 매개변수가 String 유형인 구성 매개변수를 호출하므로 BigDecimal을 사용할 때 다음을 시도하십시오. 정확한 결과를 보장하려면 new BigDecimal(String val) 또는 BigDecimal.valueof(double val)를 사용하세요.

2.compareTo

CompareTo()를 사용하여 BigDecimal의 크기를 비교합니다.

  0.05).compareTo(BigDecimal.valueOf(0.040.04).compareTo(BigDecimal.valueOf(0.040.03).compareTo(BigDecimal.valueOf(0.04

BigDecimal.compareTo(BigDecimal val)

BigDecimal이 val보다 크면 1을 반환하고,

BigDecimal이 val보다 작으면 -1을 반환합니다. BigDecimal이 다음과 같을 때 회전합니다. 값 0 .

위 내용은 BigDecimal이란 무엇입니까? BigDecimal 인스턴스 생성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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