1. BigDecimal
BigDecimal은 무한한 크기의 부동소수점 숫자를 다루기 위한 것이다. Java API - BigDecimal을 참고
1.1 사칙 연산
BigDecimal도 BigInteger와 거의 유사한 방식으로 숫자를 다룬다.
BigDecimal constructor의 argument는 string입력이다.
사칙연산을 위해서는 기본 사칙 연산 기호(+-*/)를 사용할 수 없고 다음의 method를 사용해야 한다. (a, b는 BigDecimal)
a.add(b)
a.subtract(b)
a.multiply(b)
a.divide(b,BigDecimal.ROUND_UP)
- 소수 첫째 자리에서 올림 (ROUND_DOWN, ROUND_CEILING, ROUND_FLOOR, ROUND_HALF_DOWN/UP/EVEN 등이 있음)
d.divide(b, n, BigDecimal.ROUND_UP)
- 소수점 n자리에서 올림
참고로, 일반 integer를 입력하려면 BigDecimal.valueOf(숫자) 형태로 입력한다.
예제는 다른 곳에 올라 온것을 참고해 다음과 같다.
BigDecimal b1 = new BigDecimal("0.3); BigDecimal b2 = new BigDecimal("0.4"); System.out.println(b1.add(BigDecimal.valueOf(0.5))); System.out.println(b1.multiply(b2)); System.out.println(b1.divide(b2, BigDecimal.ROUND_UP)); System.out.println(b1.divide(b2, 5, BigDecimal.ROUND_UP)); |
출력은 다음과 같다.
0.9 0.12 1.4 1.33334 |
1.2 Arrays.sort() 사용 예
N개의 BigDecimal 입력을 받아서 sorting하는 예를 통해 BigDecimal의 사용을 알아본다.
N개의 BigDecimal로 변환 가능한 String 입력을 받아서 이를 큰 것에서 작은 순으로 정렬하는 예를 살펴보자.
그리고, 입력의 수보다 Array에 미리 할당한 크기가 더 크게 하여 Arrays.sort()에서 처리방법을 볼수 있다
예제는 다른 사이트에 올라 온것을 참고해 다음과 같다.
9 //9개 data INPUT data 1 : -100 data 2 : 50 data 3 : 0 data 4 : 56.6 data 5 : 90 data 6 : 0.12 data 7 : .12 data 8 : 02.34 data 9 : 000.000 |
method Coding
import java.math.BigDecimal; import java.util.*; public class Solution { public static void main(String[] args) { Scanner sc= new Scanner(System.in); int n=sc.nextInt(); String []s=new String[n+2]; for(int i=0;i<n;i++){ s[i]=sc.next(); } sc.close(); //Arrays.sort()를 이용 descending order로 sorting. 이때 범위는 0~n-1까지 Arrays.sort(s, 0, n, (s1, s2)->(new BigDecimal(s2).compareTo(new BigDecimal(s1)))); for(int i=0;i<n;i++) { System.out.println(s[i]); } } } |
출력은 다음과 같다.
90 56.6 50 02.34 0.12 .12 0 000.000 -100 |
'경험치바(Experience Opint Bar)' 카테고리의 다른 글
jQuery closest(), parents() 메소드의 차이 (0) | 2018.06.29 |
---|---|
자바스크립트(JavaScript) 문자변환 치환 (replace) (0) | 2018.06.29 |
법정동 코드목록 조회 페이지 (시군도 코드 조회) (0) | 2018.06.27 |
input box(박스) 숫자만 입력 받기 (0) | 2018.06.26 |
노트북 무선공유기로 만들기(AP 설정하기) (0) | 2018.06.21 |