BigDecimal 회전 long 정밀도 잃 어 버 린 문제 해결

긴 말 안 할 게 요.그냥 코드 보 세 요~

  public static void main(String[] args) {
    BigDecimal asdBigDecimal = new BigDecimal(56.33347);
    long sad = asdBigDecimal.longValue();
    double asda = asdBigDecimal.doubleValue();
    System.out.println(sad);
    System.out.println(asda);
  }
실행 결과:
56
56.33347
그리고 빅 디 밀 롱 밸 류(BigDecimal.longValue)는 자동 으로 반올림 하기 도 하고,소수점 을 버 리 고 싶 지 않 은 친 구 는 더 블 밸 류(doubleValue)를 써 야 한다.
보충 지식:BigDecimal 과 int,long 간 의 상호 전환 및 기본 데이터 유형 지식 파악
(자바 는 높 은 정밀도 계산 에 사용 되 는 두 가지 종 류 를 제공 합 니 다:BigInteger 와 BigDecimal.이 두 가지 유형 에 포 함 된 방법,제 공 된 조작 은 기본 유형 에 대해 실행 할 수 있 는 조작 과 비슷 하 며,단지 방법 호출 방식 으로 연산 자 방식 을 대체 하여 실현 할 뿐이다.속도 로 정밀 도 를 바 꾼 셈 이다.BigInteger 는 임의의 정밀도 의 정 수 를 지원 하 며 연산 에서 어떠한 크기 의 정수 도 정확하게 표시 할 수 있 으 며 어떠한 정보 도 잃 어 버 리 지 않 습 니 다.BigDecimal 은 모든 정밀도 의 포 인 트 를 지원 하 며 정확 한 화폐 로 계산 할 수 있 습 니 다.
Number 클래스 를 확장 하고 Comparable 인 터 페 이 스 를 실현 합 니 다.new BigInteger(String)나 new BigDecimal(String)을 사용 하여 인 스 턴 스 를 만 들 수 있 습 니 다.add,substract,multiple,divide 와 remainder 방법 으로 산수 연산 을 완성 하고 compareTo 방법 으로 두 개의 큰 숫자 를 비교 할 수 있 습 니 다.
일반적으로 BigInteger 는 많이 사용 하지 않 습 니 다.BigDecimal 은 조금 더 많이 사용 합 니 다.예 를 들 어 JDBC 에서 한 필드 의 데이터베이스 형식 이 Number 라면 getObject().getClass()의 결 과 는 자바.math.BigDecimal 입 니 다.  
빅 인 터 거 는 인 터 거 에 비해 빅 으로 표현 할 수 있다.이것 은 과학적 인 계산 에 사용 되 는 것 입 니 다.Integer 는 int 하나만 수용 할 수 있 기 때문에 최대 치 는 2 의 31 번 방문 에서 1 을 빼 고 10 진법 은 2147483647 입 니 다.더 큰 숫자 를 계산 해 야 한다 면 31 명 은 분명히 부족 합 니 다.BigInteger 가 수용 할 수 있 는 숫자 는 정말 큽 니 다.제 가 간단하게 해 보 겠 습 니 다.수천 명 은 문제 가 없습니다.용량 이 큰 것 을 제외 하고 BigInteger 는 흔히 볼 수 있 는 조작 도 밀봉 했다.예 를 들 어+-*/의 기본 조작,그리고 절대 치,반대 수,최대 공약수,질 수 등 연산 도 있다.  
BigDecimal 의 실현 은 BigInteger 에 이용 되 었 다.다른 것 은 BigDecimal 이 작은 디지털 개념 을 넣 었 다 는 것 이다.예 를 들 어 BigDecimal d=new BigDecimal(new BigInteger(ib),5).5 는 다섯 개의 작은 숫자 를 나타 낸다.BigDecimal 은 엄 청 난 부동 소수점 연산 을 할 수 있 습 니 다.예 를 들 어+-*/의 연산 은 그 중에서 나 누 기 연산 이 가장 복잡 합 니 다.왜냐하면 상업 적 인 자릿수 와 끊 임 없 는 상황 에서 마지막 소수점 의 처 리 는 모두 고려 해 야 하기 때 문 입 니 다.)
우 리 는 실제 개발 과정 에서 BigDecimal 은 자주 사용 하 는 데이터 형식 으로 int,long 과 프로젝트 를 전환 할 수 있 습 니 다.
int 를 BigDecimal 데이터 형식 으로 변환

 //int     bigDecimal  
  public static void intToBigDecimal(){
    int b = 5;
    BigDecimal a = new BigDecimal(b);
    System.out.println(a +"      "+a.getClass().getName());
  }
Long 을 BigDecimal 데이터 형식 으로 변환

 //Long       bigDecimal
  public static void longToBigDecimal(){
    long b = 5;
    BigDecimal a = new BigDecimal(b);
    System.out.println(a +"      "+a.getClass().getName());
  }
BigDecimal 을 Long 데이터 형식 으로 변환

 //bigDecimal     Long  
  public static void bigDecimalToLong(){
    BigDecimal b = new BigDecimal(12);
    Long c = b.longValue();
    System.out.println(c+"      "+c.getClass().getName());
  }
BigDecimal 에서 int 데이터 형식 으로 변환

  //bigDecimal     int  
    public static void bigDecimalToInt(){
      BigDecimal b = new BigDecimal(12);
      int c = b.intValue();
    }
첨부:기본 데이터 형식 및 차지 하 는 자릿수 및 초기 값
기본 데이터 형식
차지 하 는 자리수
초기 값
byte
바이트 형 1 바이트(8bit)
0
short
짧 은 정형 2 바이트(16bit)
0
int
정형 4 바이트(32bit)
0
long
긴 정형 8 바이트(64bit)
0L
float
단일 정밀도 부동 소수점 형 4 바이트(32bit)
0.0f
double
2 정밀도 부동 소수점 형 8 바이트(64bit)
0.0d
boolean
자바 가 명확 하 게 밝 히 지 않 은 크기(1bit,1byte,4byte 가능)
false
char
문자 형 2 바이트(16bit)
스페이스 바
첨부:자바 의 데이터 형식

첨부:전환 중인 지식 포인트
자바 의 정수 형식 기본 int 형식;소수 형식 기본 double;

*char              ;
*int     boolean;
*          ,       ,        ,        ;
*boolean                ;
byte b2 = 120;
//      :
//    ,    ,                    
//    ,  : int   byte      ,     ,    
float f3 = 100L;     ,    ,       float    
float f1 = 100.9;     ,      double,      ,        ,      
long l3 = 1000.9f;       ,      ,      
double d2 = 10.9d;
int i2 = d2; //  :       :  double   int      
char c1 = 'a';
int i3 = c1; //    
int i4 = 100;
//char c2 = i4;//   :       :  int   char      
부:사 칙 연산

/*
1、            double  ,        double  ;
2、  ,         float,        float;
3、  ,         long,        long;
4、  ,          int  。 
*/ 
첨부:면접 함정

byte b1 = 10;
byte b2 = 11;
//  :       :  int   byte      
//  ,          int  。
byte b3 = b1 + b2 //  
byte b3 = (byte)(b1 + b2); //  

short s1 = 1; 
s1 = s1 + 1; //  :       :  int   short      
 
short s2 = 1; 
s2 += 1; //    short s2 = (short)(s2 + (short)1); //  
첨부:어 릴 때 부터 큰 순서 까지

첨부:암시 적 전환,명시 적 전환
자리 수가 적은 유형 을 자리 수가 많은 유형 에 할당 할 때 자바 는 자동 으로 암시 적 형식 으로 변환 합 니 다(예 를 들 어 int 형 이 long 형 으로 전환).
등급 이 높 은 변수의 값 을 등급 이 낮은 변수 에 부여 할 때,반드시 현식 형식 변환 연산(예 를 들 어 double 형 이 float 형 으로 전환)을 사용 해 야 한다.
부:불가 변 대상 이란 무엇 인가
가 변 적 이지 않 은 대상 은 대상 이 만 들 어 졌 을 때 상 태 를 바 꿀 수 없다 는 것 을 말한다.모든 변경 사항 은 String,Integer 및 기타 포장 류 와 같은 새로운 대상 을 만 듭 니 다.
빅 디 밀 롱 의 정 도 를 잃 어 버 린 문 제 를 해결 하 는 이 편 은 바로 편집장 님 께 서 여러분 께 공유 해 주신 모든 내용 입 니 다.참고 해 주시 고 많은 응원 부 탁 드 리 겠 습 니 다.

좋은 웹페이지 즐겨찾기