BigDecimal의 반올림 문제
이 중 b1은 new Big Decimal(Double.to String(1.34)이라고도 쓸 수 있는데, 직접 new Big Decimal(1.34)이라고 쓸 수도 있고, 그럴 수도 있지만, 정밀도 문제가 생길 뿐이다.BigDecimal one1 = new BigDecimal(1.34);//1.3400000000000000799360577730112709105014801025390625 BigDecimal two1 = new BigDecimal("1.34");//1.34
따라서 반올림할 때 반드시 더블 으로 반올림하지 마세요. 그렇지 않으면 정밀도 문제로 오차가 생길 수 있습니다. 예를 들어 다음과 같습니다.
System.out.println(new BigDecimal((double)0.85).setScale(1, BigDecimal.ROUND_HALF_UP));// 0.8
new Big Decimal(double)0.85)의 결과가 0.8499999999999777953907496915273663818359375이기 때문에 0.85가 아니라 String으로 반올림해야 돼요.
System.out.println(new BigDecimal(Double.toString(0.85)).setScale(1, BigDecimal.ROUND_HALF_UP));// 0.9
스트링도 돼요.format () 방법 반올림
System.out.println(String.format("%.1f", (double)0.85));//0.9
소수 사이의 연산은 정밀도 문제도 관련되기 때문에 모두 BigDecimal로 바꾸어 계산하는 것이 가장 좋다
public BigDecimal add(BigDecimal value);//
public BigDecimal subtract(BigDecimal value);//
public BigDecimal multiply(BigDecimal value);//
public BigDecimal divide(BigDecimal value);//
예를 들어 덧셈:
BigDecimal b1 = new BigDecimal(Double.toString(value1));
BigDecimal b2 = new BigDecimal(Double.toString(value2));
System.out.println(b1.add(b2) + "");//b1 + b2
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.