1. BigDecimal ์๊ฐ
BigDecimal์ ์๋ฐ์์ ์ค์๋ฅผ ์ ํํ๊ฒ ํํํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํด๋์ค์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์๋ฅผ ์ ํํ๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ ์ ๋ถ๋ถ๊ณผ ์์ ๋ถ๋ถ์ ๋ถ๋ฆฌํ์ฌ ์ ์ฅํ๋ฉฐ, ํฐ ์ซ์๋ฅผ ๋ค๋ฃฐ ์ ์์ต๋๋ค.
์ค์๋ฅผ ์ ํํ๊ฒ ํํํ๋ ๊ฒ์ ์ค์ํ ์ด์ ๊ฐ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก double์ด๋ float๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ํ์ ์ ๊ทผ์ฌ๊ฐ์ผ๋ก ์ค์๋ฅผ ํํํ๊ธฐ ๋๋ฌธ์, ๋ถ์ ํํ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ํ์ง๋ง BigDecimal์ ์ ํํ ์ค์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฅํฉ๋๋ค.
BigDecimal์ ๋ถ๋ณ ํด๋์ค๋ก ์ค๊ณ๋์ด ์๊ธฐ ๋๋ฌธ์ ํ ๋ฒ ์์ฑ๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๋์ ์๋ก์ด ์ธ์คํด์ค๋ฅผ ์์ฑํ์ฌ ๊ฐ์ ์กฐ์ํด์ผ ํฉ๋๋ค. ์ด๋ ์ ํ์ฑ๊ณผ ์์ ์ฑ์ ์ ๊ณตํ๋๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ค์ ์น์ ์์๋ BigDecimal ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
2. BigDecimal ์ธ์คํด์ค ์์ฑํ๊ธฐ
BigDecimal์ ์์ฑ์๋ฅผ ํตํด ์ธ์คํด์ค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก BigDecimal์ ์์ฑํ ์ ์์ผ๋ฉฐ, ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
์ ์๋ก BigDecimal ์ธ์คํด์ค ์์ฑํ๊ธฐ
BigDecimal number = new BigDecimal(10);
์์ ์์ ์์๋ ์ ์ 10์ ์ ๋ ฅํ์ฌ BigDecimal ์ธ์คํด์ค๋ฅผ ์์ฑํ์ต๋๋ค. ์ด๋ ๊ฒ ์์ฑ๋ BigDecimal์ ์ ํํ ์ค์๋ฅผ ํํํ๊ธฐ ์ํด ์ ์ ๋ถ๋ถ๊ณผ ์์ ๋ถ๋ถ์ ํฌํจํ๊ฒ ๋ฉ๋๋ค.
๋ฌธ์์ด๋ก BigDecimal ์ธ์คํด์ค ์์ฑํ๊ธฐ
BigDecimal number = new BigDecimal("3.141592653589793238");
์์ ์์ ์์๋ ๋ฌธ์์ด "3.141592653589793238"์ ์ ๋ ฅํ์ฌ BigDecimal ์ธ์คํด์ค๋ฅผ ์์ฑํ์ต๋๋ค. ๋ฌธ์์ด ํ์์ผ๋ก ์์ฑํ ๋๋ ์ ํํ ๊ฐ์ ์ง์ ํ ์ ์์ผ๋ฉฐ, ์์์ ์ดํ ์๋ฆฌ์์ ์ ํ์ด ์์ต๋๋ค.
BigDecimal ์์ ์ฌ์ฉํ๊ธฐ
BigDecimal์ ๋ช ๊ฐ์ง ์์๋ฅผ ์ ๊ณตํ๊ธฐ๋ ํฉ๋๋ค.
BigDecimal zero = BigDecimal.ZERO; // 0
BigDecimal one = BigDecimal.ONE; // 1
BigDecimal ten = BigDecimal.TEN; // 10
์์ ์์ ์์๋ BigDecimal.ZERO, BigDecimal.ONE, BigDecimal.TEN ์์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๊ฐ 0, 1, 10 ๊ฐ์ ๊ฐ์ง๋ BigDecimal ์ธ์คํด์ค๋ฅผ ์์ฑํ์ต๋๋ค.
๋ค์ ์น์ ์์๋ BigDecimal ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ์ฐํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
3. BigDecimal ์ฐ์ฐ
BigDecimal์ ๋ค์ํ ์ฐ์ฐ์ ์ง์ํ์ฌ ์ ํํ ๊ฒฐ๊ณผ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด ์น์ ์์๋ BigDecimal์ ์ฌ์ฉํ์ฌ ์ฌ์น์ฐ์ฐ๊ณผ ๋น๊ต ์ฐ์ฐ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
์ฌ์น์ฐ์ฐ
BigDecimal์ ์ฌ์น์ฐ์ฐ์ ์ฌ์ฉ๋๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ์๋๋ ์ฃผ์ ์ฌ์น์ฐ์ฐ ๋ฉ์๋๋ค์ ์์์ ๋๋ค:
BigDecimal num1 = new BigDecimal("10");
BigDecimal num2 = new BigDecimal("5");
BigDecimal sum = num1.add(num2); // ๋ง์
BigDecimal difference = num1.subtract(num2); // ๋บ์
BigDecimal product = num1.multiply(num2); // ๊ณฑ์
BigDecimal quotient = num1.divide(num2); // ๋๋์
์์ ์์์์๋ ๋ ๊ฐ์ BigDecimal ์ธ์คํด์ค num1
๊ณผ num2
๋ฅผ ์์ฑํ๊ณ , ์ด๋ค์ ์ฌ์ฉํ์ฌ ๋ง์
, ๋บ์
, ๊ณฑ์
, ๋๋์
์ฐ์ฐ์ ์ํํ์ต๋๋ค. ์ฐ์ฐ ๊ฒฐ๊ณผ๋ ๊ฐ๊ฐ sum
, difference
, product
, quotient
๋ณ์์ ์ ์ฅ๋ฉ๋๋ค.
๋น๊ต ์ฐ์ฐ
BigDecimal์ ๋น๊ต ์ฐ์ฐ์ ์ฌ์ฉ๋๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ์๋๋ ์ฃผ์ ๋น๊ต ์ฐ์ฐ ๋ฉ์๋๋ค์ ์์์ ๋๋ค:
BigDecimal num1 = new BigDecimal("10");
BigDecimal num2 = new BigDecimal("5");
boolean equal = num1.equals(num2); // ๊ฐ์ด ๊ฐ์์ง ํ์ธ
boolean greaterThan = num1.compareTo(num2) > 0; // ํฌ๋ค
boolean lessThan = num1.compareTo(num2) < 0; // ์๋ค
boolean greaterThanOrEqual = num1.compareTo(num2) >= 0; // ํฌ๊ฑฐ๋ ๊ฐ๋ค
boolean lessThanOrEqual = num1.compareTo(num2) <= 0; // ์๊ฑฐ๋ ๊ฐ๋ค
์์ ์์์์๋ ๋ ๊ฐ์ BigDecimal ์ธ์คํด์ค num1
๊ณผ num2
๋ฅผ ์์ฑํ๊ณ , ์ด๋ค์ ์ฌ์ฉํ์ฌ ๊ฐ์ด ๊ฐ์์ง ํ์ธํ๊ณ , ํฌ๊ธฐ๋ฅผ ๋น๊ตํ๋ ์ฐ์ฐ์ ์ํํ์ต๋๋ค. ๊ฐ ๋น๊ต ๊ฒฐ๊ณผ๋ boolean ๊ฐ์ ๊ฐ์ง๋ ๋ณ์์ ์ ์ฅ๋ฉ๋๋ค.
BigDecimal์ ๋์ฑ ๋ณต์กํ ์ฐ์ฐ๋ ๊ฐ๋ฅํ๋ฉฐ, ์ด์ธ์๋ ๋ฐ์ฌ๋ฆผ, ์์์ ์ดํ ์๋ฆฌ์ ์ง์ ๋ฑ์ ๊ธฐ๋ฅ๋ ์ ๊ณตํฉ๋๋ค. ์ฌ์ฉ์์ ํ์์ ๋ฐ๋ผ BigDecimal์ ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ๋ค์ํ ์ฐ์ฐ์ ์ํํ ์ ์์ต๋๋ค.
์ธ ๋ฒ์งธ ๋ฐ ๋ง์ง๋ง ์น์ ์์๋ BigDecimal์ ํฌ๋งทํ ๊ณผ ๋ฐ์ฌ๋ฆผ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
4. BigDecimal ๋น๊ต
BigDecimal์ ์ ํํ ๋น๊ต๋ฅผ ์ํด equals
๋ฉ์๋์ compareTo
๋ฉ์๋๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด ์น์
์์๋ ์ด๋ฌํ ๋น๊ต ๋ฉ์๋๋ค์ ์ฌ์ฉํ์ฌ BigDecimal ๊ฐ์ ๋น๊ตํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
๊ฐ์ ๋๋ฑ ์ฌ๋ถ ํ์ธํ๊ธฐ
equals
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๊ฐ์ BigDecimal ๊ฐ์ด ๋๋ฑํ์ง ํ์ธํ ์ ์์ต๋๋ค. ์๋๋ equals
๋ฉ์๋์ ์์์
๋๋ค:
BigDecimal num1 = new BigDecimal("10");
BigDecimal num2 = new BigDecimal("10");
boolean equal = num1.equals(num2); // true
์์ ์์์์๋ ๋ ๊ฐ์ BigDecimal ์ธ์คํด์ค num1
๊ณผ num2
๋ฅผ ์์ฑํ๊ณ , equals
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๊ฐ์ด ๋๋ฑํ์ง ํ์ธํ์ต๋๋ค. ๊ฒฐ๊ณผ๋ก true๊ฐ ๋ฐํ๋ฉ๋๋ค.
๊ฐ์ ํฌ๊ธฐ ๋น๊ตํ๊ธฐ
compareTo
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๊ฐ์ BigDecimal ๊ฐ์ ๋น๊ตํ ์ ์์ต๋๋ค. compareTo
๋ฉ์๋๋ ๋น๊ต ๊ฒฐ๊ณผ๋ฅผ ์ ์๋ก ๋ฐํํ๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ์ ๊ฐ์ง๋๋ค:
- 0: ๊ฐ์ด ๋์ผํจ
- ์์: ๋น๊ต ๋์ ๊ฐ๋ณด๋ค ํผ
- ์์: ๋น๊ต ๋์ ๊ฐ๋ณด๋ค ์์
์๋๋ compareTo
๋ฉ์๋์ ์์์
๋๋ค:
BigDecimal num1 = new BigDecimal("10");
BigDecimal num2 = new BigDecimal("5");
int result = num1.compareTo(num2); // 1 (num1 > num2)
์์ ์์์์๋ ๋ ๊ฐ์ BigDecimal ์ธ์คํด์ค num1
๊ณผ num2
๋ฅผ ์์ฑํ๊ณ , compareTo
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ ๊ฐ์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ์ต๋๋ค. ๊ฒฐ๊ณผ๋ก 1์ด ๋ฐํ๋ฉ๋๋ค.
BigDecimal์ ์ ํํ ๋น๊ต๋ฅผ ์ํด ์์์ ์ดํ ์๋ฆฌ์๊น์ง ๋น๊ตํฉ๋๋ค. ๋ฐ๋ผ์ ํฌ๊ธฐ๊ฐ ๊ฐ์ ์ ์ ๊ฐ์ด๋ผ๋ ์์์ ์ดํ ์๋ฆฌ์๊ฐ ๋ค๋ฅด๋ฉด ๋ค๋ฅธ ๊ฐ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์ธ ๋ฒ์งธ ์น์ ์์๋ BigDecimal์ ์ฐ์ฐ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
5. BigDecimal ํฌ๋งทํ
BigDecimal์ ๊ฐ์ ํฌ๋งทํ ํ๊ณ ์์์ ์ดํ ์๋ฆฌ์๋ฅผ ์ง์ ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด ์น์ ์์๋ BigDecimal ๊ฐ์ ํฌ๋งทํ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
DecimalFormat ์ฌ์ฉํ๊ธฐ
DecimalFormat ํด๋์ค๋ ์ซ์ ๊ฐ์ ๋ค์ํ ํ์์ผ๋ก ํํํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค. BigDecimal ๊ฐ์ ํฌ๋งทํ ํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅผ ์ ์์ต๋๋ค:
- DecimalFormat ์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค.
- ์ํ๋ ํ์์ ์ง์ ํฉ๋๋ค.
format
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ BigDecimal ๊ฐ์ ํฌ๋งทํ ํฉ๋๋ค.
๋ค์์ DecimalFormat์ ์ฌ์ฉํ์ฌ BigDecimal ๊ฐ์ ํฌ๋งทํ ํ๋ ์์์ ๋๋ค:
import java.text.DecimalFormat;
BigDecimal number = new BigDecimal("123456.789");
DecimalFormat decimalFormat = new DecimalFormat("###,###.##");
String formattedNumber = decimalFormat.format(number); // "123,456.79"
์์ ์์์์๋ BigDecimal ์ธ์คํด์ค number
๋ฅผ ์์ฑํ๊ณ , DecimalFormat ์ธ์คํด์ค decimalFormat
๋ฅผ ์์ฑํ์ฌ ํ์์ ์ง์ ํ์ต๋๋ค. ๊ทธ ํ format
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ BigDecimal ๊ฐ์ ํฌ๋งทํ
ํ์ต๋๋ค. formattedNumber
๋ณ์์๋ "123,456.79"๋ผ๋ ํฌ๋งทํ
๋ ๊ฐ์ด ์ ์ฅ๋ฉ๋๋ค.
DecimalFormat์ ํ์ ์ง์ ์ ๋ค์ํ ์ต์ ์ ์ ๊ณตํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ Java DecimalFormat ๋ฌธ์๋ฅผ ์ฐธ์กฐํ์๊ธฐ ๋ฐ๋๋๋ค.
์ธ ๋ฒ์งธ ์น์ ์์๋ BigDecimal์ ๋ฐ์ฌ๋ฆผ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.
๋๊ธ