java에서 소수점 이하 연산에 대한 지원이 부족하여 계산에 관해서는 BigDecimal 를 권장 하고 있습니다.
아래에 예제 소스를 기록 하였습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | import java.math.BigDecimal; public class BigDecimalTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub BigDecimal decimal1 = new BigDecimal("6.675"); BigDecimal decimal2 = new BigDecimal("3"); //덧셈 System.out.println(decimal1+"+"+decimal2+"="+decimal1.add(decimal2)+" : 덧셈"); //뺄셈 System.out.println(decimal1+"-"+decimal2+"="+decimal1.subtract(decimal2)+" : 뺄셈"); //곱셈 System.out.println(decimal1+"*"+decimal2+"="+decimal1.multiply(decimal2)+" : 곱셈"); //나눗셈 System.out.println(decimal1+"/"+decimal2+"="+decimal1.divide(decimal2)+" : 나눗셈"); System.out.println(decimal1+"/"+decimal2+"="+decimal1.divide(decimal2, 2, BigDecimal.ROUND_UP)+" : 나눗셈(올림)"); System.out.println(decimal1+"/"+decimal2+"="+decimal1.divide(decimal2, 2, BigDecimal.ROUND_DOWN)+" : 나눗셈(내림)"); System.out.println(decimal1+"/"+decimal2+"="+decimal1.divide(decimal2, 2, BigDecimal.ROUND_CEILING)+" : 나눗셈(양수 올림, 음수 내림)"); System.out.println(decimal1+"/"+decimal2+"="+decimal1.divide(decimal2, 2, BigDecimal.ROUND_FLOOR)+" : 나눗셈(양수 내림, 음수 올림)"); System.out.println(decimal1+"/"+decimal2+"="+decimal1.divide(decimal2, 2, BigDecimal.ROUND_HALF_UP)+" : 나눗셈(5이상 올림)"); System.out.println(decimal1+"/"+decimal2+"="+decimal1.divide(decimal2, 2, BigDecimal.ROUND_HALF_DOWN)+" : 나눗셈(5초과 올림)"); } } |
결과
나눗셈을 진행하다 보면 Non-terminating decimal expansion; no exact representable decimal result. 오류가 발생하게 되는데 해당 부분은 divide 메소드 사용시 10을 3으로 나누는 것 처럼 소수점이 무한대로 떨어지기 때문입니다.
그래서 divide 메소드를 사용하실 때 주의 하셔야 하고 해당 부분에 대한 자리수 및 올림, 내림을 설정해 주셔야 합니다.
위에 메소드에 입력될 파라미터를 설명 드리면 아래와 같습니다.
decimal1.divide(decimal2, 2=>보여줄 자리수, BigDecimal.ROUND_UP=>올림 내림 타입)
보여줄 자리수가 두자리수라면 세자리수의 값을 가지고 올릴지 말지를 판단하여 계산 하는 방식 입니다.
JAVA에서 JSON 생성하기 (4) | 2014.03.19 |
---|---|
JAVA URL로 html 소스 불러오기 (JAVA 웹페이지 소스 추출) (2) | 2014.03.19 |
contentType을 이미지(jpg)로 출력하기 (0) | 2014.03.18 |
이메일 형식 검증 (validation) (0) | 2014.03.13 |
JAVA에서 JSONParser 사용하기 (6) | 2014.03.07 |
댓글 영역