1. 정의 필드에 높은 정밀도가 필요한 경우 일반적으로 BigDecimal
유형이 사용됩니다 .
2. 일반적으로 사용되는 생성자
BigDecimal(int)
는 매개 변수에 지정된 정수 값
BigDecimal(double)
으로 객체 생성 매개 변수에 지정된 배정 밀도 값
BigDecimal(long)
으로 객체 생성 매개 변수에
BigDecimal(String)
지정된 정수 값 으로 객체 생성 문자열에 매개 변수에 지정된 값으로 객체 생성 객체
는 직접 BigDecimal 객체를 생성하고 다른 유형의 해당 값을 전달할 수 있지만 float 및 double 값을 전달하면 예측할 수없는 상황이 발생합니다.
double aa = 0.1116666;
BigDecimal bb = new BigDecimal(aa);
System.out.println("bb的值为"+bb);
결과는 다음과 같습니다.
bb的值为0.111666600000000004744293846670188941061496734619140625
원인 분석 :
1) 매개 변수 유형을 double
사용한 구성 방법의 결과 는 다소 예측할 수 없습니다. Java로 newBigDecimal(0.1116666)
작성하는 것이 BigDecimal
정확히 동일 하다고 생각할 수도 0.1116666
있지만 실제로는 동일 0.111666600000000004744293846670188941061496734619140625
합니다. 이는 0.1116666
정확하게 표현할 수 없기 때문입니다 double
(또는이 경우 유한 길이 이진 십진수로 표현할 수 없음). 생성자에 전달 된 값은 정확히 같지 않습니다 0.1116666
(표면적으로는이 값과 동일 함).
2) String
공법 완전히 예측 : 필기 newBigDecimal(“0.1116666”)
를 만들 것 BigDecimal
, 예상 정확히 동일하다 0.1116666
. 따라서 일반적으로 String
먼저 시공 방법 을 사용하는 것이 좋습니다 .
경우 3) Double
타입 d는 double
차례 BigDeciamal
, 첫 번째 사용 Double.toString(double)
방법 또는 String.valueOf(double)
방법 double
으로 변환 String
다음 호출 타입, BigDeciamal
위한 파라미터 String
의 실제 값에 해당 공법의 종류.
3. BigDecimal
일반적인 방법에 대한 자세한 설명
1) 일반적인 방법
add(BigDecimal)
: BigDecimal
개체에 값을 추가하여 개체를 반환 BigDecimal
합니다.
subtract(BigDecimal)
: 객체 BigDecimal
의 값을 빼고 BigDecimal
객체 를 반환
multiply(BigDecimal)
: BigDecimal
객체의 값을 곱하여 객체를 반환 BigDecimal
합니다.
divide(BigDecimal)
: 객체 BigDecimal
의 값을 나누고 BigDecimal
객체 를 반환
toString()
: BigDecimal
객체의 값을 문자열로 변환
doubleValue()
: BigDecimal
객체의 값을 배정 밀도 숫자로 변환
floatValue()
: BigDecimal
객체의 값을 단 정밀도 숫자로 변환
longValue()
: BigDecimal
객체의 값을 긴 정수로 변환
intValue()
: BigDecimal
객체의 값을 정수로 변환
2), BigDecimal
크기 비교
Java는 BigDecimal
일반적으로 크기 비교 방법 을 사용 bigdemical
합니다.compareTo
int a = bigdemical.compareTo(bigdemical2)
반품 결과 분석 :
A = -1 수단 bigdemical
보다 작 bigdemical2
;
A = 0, 수단은 bigdemical
동일 bigdemical2
;
a = 1 인 수단에 bigdemical
큰 이상 bigdemical2
,
예를 들면, A는보다 크거나 같 B
new bigdemica(a).compareTo(new bigdemical(b)) >= 0
4. BigDecima````格式化 由于
NumberFormat 类的
format () 方法可以使用
BigDecimal 对象作为其参数,可以利用
BigDecimal''`은 16 자리를 초과하는 통화 값, 백분율 값 및 일반 값에 대한 서식 제어를 수행합니다.
사용 타고 BigDecimal
예제로 통화 및 백분율 서식을. 먼저 산술 연산 BigDecimal
을 수행 한 후 개체를 만들고 BigDecimal
각각 통화 및 백분율 형식에 대한 참조를 설정하고 마지막으로 BigDecimal
개체를 format()
메서드 매개 변수 로 사용하여 형식이 지정된 통화 값과 백분율을 출력합니다.
NumberFormat currency = NumberFormat.getCurrencyInstance(); //建立货币格式化引用
NumberFormat percent = NumberFormat.getPercentInstance(); //建立百分比格式化引用
percent.setMaximumFractionDigits(3); //百分比小数点最多3位
BigDecimal loanAmount = new BigDecimal("15000.48"); //贷款金额
BigDecimal interestRate = new BigDecimal("0.008"); //利率
BigDecimal interest = loanAmount.multiply(interestRate); //相乘
System.out.println("贷款金额:\t" + currency.format(loanAmount));
System.out.println("利率:\t" + percent.format(interestRate));
System.out.println("利息:\t" + currency.format(interest));
결과:
贷款金额: ¥15,000.48 利率: 0.8% 利息: ¥120.00
5. BigDecimal
요약
정확한 소수점 계산이 필요한 경우 1).을 사용합니다 BigDecimal
. BigDecimal
성능 비율 double
및 float
거대하고 복잡한 계산을 처리 할 때 불량을 특히 명백하다. 따라서 일반적인 정확도를 계산할 필요가 없습니다 BigDecimal
.
2). 파라미터 유형과 함께 String
생성자 를 사용 하십시오.