๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

PROGRAMING/JAVA

java.math.BigDecimal ์‚ฌ์šฉ๋ฒ•

 


 

import java.math.BigDecimal;

 

์ด๋ ‡๊ฒŒ ์„ ์–ธํ•˜๊ณ  ์‹œ์ž‘ํ•˜๋ฉฐ double, float๋ณด๋‹ค ํฐ์ˆ˜, ์ž‘์€์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์šฉ๋„

double, float๋ณด๋‹ค ์˜ค์ฐจ๋Š” ์ ์ง€๋งŒ, ํ”„๋กœ๊ทธ๋žจ์€ ๋ฌด๊ฑฐ์›Œ ์ง€๋Š”๊ฒŒ ๋‹จ์ ...

 


 

BigDecimal BigA = new BigDecimal("3");

BigDecimal BigB = BigDecimal.valueOf(100);

 

๊ธฐ๋ณธ์ ์ธ ์„ ์–ธ์€ ์ด๋ ‡๊ฒŒ new๋ฅผ ์‚ฌ์šฉํ• ๋•Œ์—๋Š” ๋ฌด์กฐ๊ฑด string์œผ๋กœ ๋„ฃ์–ด์ฃผ๊ณ , double๋กœ ๋„ฃ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์—๋Š” valueOf๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ!

string์œผ๋กœ๋„ double๋กœ๋„ ๋“ค์–ด๊ฐ€์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— stringํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

BigDecimal BigC = new BigDecimal(String.valueOf(c));

 

 

์ด ์„ ์–ธ์ด ๋„ˆ๋ฌด ๊ธธ์–ด ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” 0, 1, 10์€ ์ƒ์ˆ˜๋กœ ์ •์˜๋˜์–ด ์žˆ๋‹ค.

๊ทธ๋ƒฅ ์ •์˜๋œ ๋Œ€๋กœ ์„ ์–ธํ•˜๋ฉด ๋œ๋‹ค.

BigDecimal.ZERO

BigDecimal.ONE

BigDecimal.TEN

 


 

์—ฌ๊ธฐ์—์„œ ์‚ฌ์น™์—ฐ์‚ฐ์„ ํ•˜๊ณ ์‹ถ๋‹ค๋ฉด?

BigDecimal์— ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค!

 

BigA.add(BigB);

BigA.subtract(BigB);

BigA.multiply(BigB);

BigA.divide(BigB);

BigA.remainder(BigB);

 

์‚ฌ์น™์—ฐ์‚ฐ +, -, *, /์— ๋Œ€์ž…๋˜๊ณ  remainer๋Š” %๊ธฐํ˜ธ, ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•˜๋Š” ๋ฉ”์†Œ๋“œ์ด๋‹ค.

 

์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€ divide() ๋ฉ”์†Œ๋“œ์ด๋‹ค!

๊ทธ๋ƒฅ ๋‚˜๋ˆˆ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ ๋ฐœ์ƒ๐Ÿ˜ข

divide() ๋ฉ”์†Œ๋“œ์˜ ์ธ์ž๋กœ ํ”ผ์—ฐ์‚ฐ์ž, ์ถœ๋ ฅํ•  ์ž๋ฆฌ์ˆ˜, ์˜ฌ๋ฆผ๋‚ด๋ฆผ ์„ค์ •๊ฐ’ ์„ ์ง€์ •ํ•ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

System.out.println(BigA.divide(BigB, 9, ROUND_CEILING));

 


 

๋น„๊ต์—ฐ์‚ฐ๋„ ๋น„์Šทํ•˜๊ฒŒ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

BigA.equal(BigB);

BigA.compareTo(BigB);

 

๋ฉ”์†Œ๋“œ๊ฐ€ ๋‹ค์–‘ํ•œ ๋“ฏํ•˜๋‹ค. ์ตœ์†Œ๊ฐ’, ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•  ๋•Œ์—๋Š”

BigA.min(BigB);

BigA.max(Big.B);

 

๊ณ„์‚ฐ์€ ๊ผญ ์œ„์˜ ๋ฉ”์†Œ๋“œ๋“ค๋กœ ํ•ด์•ผํ•œ๋‹ค.

ํ‰์†Œ ์‚ฌ์šฉํ•˜๋˜ ์—ฐ์‚ฐ์ž๋“ค์„ ์‚ฌ์šฉํ•˜๋ฉด ์ „๋ถ€ ์—๋Ÿฌ..๐Ÿ˜ญ

 

 


 

String์ด๋‚˜ valueOf๋Š” ๋‚˜์ค‘์—...

ํ•  ์ˆ˜ ์žˆ์„์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ??