my sql 의 decimal 과 자바 의 BigDecimal 용법

my sql 의 decimal 과 자바 의 BigDecimal 은 대응 관계 입 니 다.
MySQL 중:
정밀도 유형 은 DECIMAL 로 정확 한 정밀도 유형 을 유지 하고 자주 사용 하 는 화폐 데이터 에 대해 돈~
column_name DECIMAL(P, D);
  • P 는 유효 숫자의 정밀도 이 고 D 는 소수점 뒤의 자릿수 입 니 다~
  • D 는 기본 값 0,P 는 기본 값 10 을 쓰 지 않 습 니 다~columnname DECIMAL;

  • 자바 중:그럼 데이터베이스 에 저 장 했 습 니 다.이어서 데 이 터 를 찾 습 니 다~
    개발 중 에 저희 가 직접 가 져 와 서 쓰 면 절대 틀 릴 수 있어 요.
    System.out.println((1.01 + 2.02) == 3.03 );
    System.out.println(new Float(1.01 + 2.02).equals(3.03) );
    System.out.println(new Float(1.01 + 2.02) == (3.03) );
    System.out.println(new Float(1.01 + 2.02) == new Float(3.03) );
    

    이상 의 결 과 는 모두 틀 렸 습 니 다~3.03 과 같 지 않 습 니 다.실제로 출력 한 것 은 3.03000002 입 니 다.float 이 든 double 부동 소수점 이 든 정밀도 가 떨 어 지기 때문에 BigDecimal 을 사용 해 야 합 니 다.
    BigDecimal 을 만 드 는 주요 두 가지 방법:
    BigDecimal b1 = new BigDecimal("1.34");//1.34  
    BigDecimal b2 = BigDecimal.valueOf(1.34);//1.34  
    

    직접 new 를 사용 하면 정밀 도 를 잃 게 됩 니 다.
    BigDecimal one1 = new BigDecimal(1.34);//1.3400000000000000799360577730112709105014801025390625 
    

    상기 두 가 지 를 제외 하고 특수 한 0,1,10 은 다음 과 같이 쓸 수 있다.
    BigDecimal zero = BigDecimal.ZERO;  
    BigDecimal one = BigDecimal.ONE;  
    BigDecimal ten = BigDecimal.TEN;  
    

    BigDecimal.ZERO,new BigDecimal(0),BigDecimal.value Of(0)세 가 지 를 비교 해 보면 equals 는 모두 true 이다.
    원본 코드 를 보면 10 이내 의 대상 은 모두 같다 는 것 을 알 수 있다.
    가감 승제 에 대하 여
    public static double add(double value1,double value2){
           
        BigDecimal b1 = new BigDecimal(Double.toString(value1));  
        BigDecimal b2 = new BigDecimal(Double.toString(value2));  
        return b1.add(b2).doubleValue();  
    }  
    

    BigDecimal 의 연산 은 원래 값 을 조작 하지 않 고 새로운 BigDecimal 대상 으로 돌아 갈 수 있 습 니 다.이 점 은 일부 어린이 들 이 잘못 알 고 있 을 수 있 으 니 주의해 야 합 니 다.

    좋은 웹페이지 즐겨찾기