Java에서 BigDecimal 클래스의 간단한 사용 방법
2934 단어 JavaBigDecimal
일반적으로 자바 안의 상업 계산을 언급하면, 우리는 플로트와 더블을 사용할 수 없다는 것을 안다. 왜냐하면 그들은 정확한 계산을 할 수 없기 때문이다.그러나 자바의 디자이너는 프로그래머에게 매우 유용한 클래스인 Big Decimal을 제공했다. 그는 플로트와 더블 클래스가 정확한 계산을 할 수 없는 결함을 보완할 수 있다.BigDecimal 클래스는java에 있습니다.maths 클래스 패키지.우선 Big Decimal 객체를 구성하는 방법을 살펴보겠습니다.그것의 구조 함수는 매우 많은데, 여기서 가장 자주 사용하는 두 가지를 골라 보여 준다. 하나는 Big Decimal (double val) 이고, 다른 하나는 Big Decimal (String str) 이다.이 두 가지는 크게 다르지 않아 보이지만 API 설명과 같습니다.
/*The results of this constructor can be somewhat unpredictable. One might assume that
new BigDecimal(.1) is exactly equal to .1, but it is actually equal
to .1000000000000000055511151231257827021181583404541015625. This is so because .1
cannot be represented exactly as a double (or, for that matter, as a binary fraction
of any finite length). Thus, the long value that is being passed in to the constructor
is not exactly equal to .1, appearances nonwithstanding.
The (String) constructor, on the other hand, is perfectly predictable: new BigDecimal
(".1") is exactly equal to .1, as one would expect. Therefore, it is generally
recommended that the (String) constructor be used in preference to this one.*/
즉, 더블을 매개 변수로 하는 구조 함수를 이용하여 BigDecimal 대상을 정확하게 구성할 수 없기 때문에 상하문의 환경, 즉 정확한 위치를 지정해야 한다.String 객체를 매개 변수로 전달하는 구조 함수를 이용하여 BigDecimal 객체를 정확하게 구성할 수 있습니다.다음 코드를 참조하십시오.
import java.math.*;
public class TestBigDecimal {
public static void main(String args[]){
BigDecimal bd = new BigDecimal("10.123");
BigDecimal bd1 = new BigDecimal(10.123);
System.out.println(bd +"/n"+ bd1);
}
}
실행 후 출력:10.123
10.1229999999999993320898283855058252811431884765625
그래서 우리는 구조 함수를 선택할 때 구체적인 수요를 보고 결정해야 한다.
또한 int,float,double,long, Big Decimal 대상과 어떻게 기본 유형을 바꾸는지 묻는 사람들이 많다.간단합니다.
기본 유형은 구조 함수를 통해 대응하는 BigDecimal 대상으로 변환되고, BigDecimal 클래스는 intValue (), floatValue (), doubleValue (), longValue () 방법과 같이 BigDecimal 대상을 대응하는 값으로 변환합니다.
Big Decimal이 어떻게 계산되는지에 대해 저는 포럼에서 한 사람의 질문 댓글을 예로 삼아 Big Decimal의 연산 방법을 간단하게 작성합니다.제목은 이백무사거리를 걷고 주전자를 들고 술을 사러 간다.가게를 만나면 배가 되고, 꽃을 보면 한 말을 마시고, 다섯 개를 만나면 꽃과 가게를 만나고, 주전자에 담긴 술을 다 마시고, 이백주전자의 중원에 몇 말의 술이 있는지 물어본다.
이 문제는 뒤에서 앞으로 밀고 역연산해서 원래 있던 술의 부피를 얻어내야 한다.
import java.math.*;
public class Libai {
public static void main(String args[]){
BigDecimal volumn = new BigDecimal("0");
for (int i=0; i<5; i++){
volumn = volumn.add(new BigDecimal("1"));
volumn = volumn.divide(new BigDecimal("2"));
}
System.out.print(volumn);
}
}
실행 결과:0.96875
본 논문이 여러분의 Java 프로그래밍 학습에 도움이 되기를 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.