my sql 의 decimal 과 자바 의 BigDecimal 용법
7101 단어 mysqldecimalBigDecimal
MySQL 중:
정밀도 유형 은 DECIMAL 로 정확 한 정밀도 유형 을 유지 하고 자주 사용 하 는 화폐 데이터 에 대해 돈~
column_name DECIMAL(P, D);
자바 중:그럼 데이터베이스 에 저 장 했 습 니 다.이어서 데 이 터 를 찾 습 니 다~
개발 중 에 저희 가 직접 가 져 와 서 쓰 면 절대 틀 릴 수 있어 요.
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 대상 으로 돌아 갈 수 있 습 니 다.이 점 은 일부 어린이 들 이 잘못 알 고 있 을 수 있 으 니 주의해 야 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL에서 JSON 인덱싱 - aarondfrancis사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 말하지만 완전히 정확하지는 않습니다. MySQL로 JSON 열을 인덱싱하는 것은 완전히 가능합니다! 사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.