JavaRush /Java Blog /Random-KO /BigDecimal ์ˆซ์ž์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ
grishin
๋ ˆ๋ฒจ 27
ะฅะฐั€ัŒะบะพะฒ

BigDecimal ์ˆซ์ž์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
๋“œ๋””์–ด 3๊ฐœ์›”๊ฐ„์˜ ํœด์‹๊ธฐ๋ฅผ ๋งˆ์น˜๊ณ  ๋‹ค์‹œ ๊ฐ•์ขŒ๋ฅผ ์ˆ˜๊ฐ•ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 1์›” ์ดˆ์— ์‰ฌ์—ˆ์–ด์š”. ๊ทธ๋Ÿฐ ๋‹ค์Œ HTML/CSS/Javascript์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ถ„์•ผ๋ฅผ ๊ณต๋ถ€ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ณผ์ •์—์„œ ๊ธฐ์ˆ (์„œ๋ธ”๋ฆฟ ๋ฐ JSP)์„ ๋ฐฐ์šฐ๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋‹น์‹œ์—๋Š” 24๋ ˆ๋ฒจ์„ ์™„๋ฃŒํ–ˆ๊ณ  ๋‚ด๋ถ€ ์ˆ˜์—…์— ์•ฝ๊ฐ„ ์ •์ฒด๋˜์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ฌด๊ฒƒ๋„ ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์งง์€ ๊ธฐ๊ฐ„์— ๋„ˆ๋ฌด ๋งŽ์€ ์ง€์‹์„ ์Šต๋“ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ป์€ โ€‹โ€‹์ง€์‹์„ ์ฒด๊ณ„ํ™”ํ•ด์•ผ ํ–ˆ๋‹ค๋Š” ๊ฒƒ๋ฟ์ž…๋‹ˆ๋‹ค. "์œ ๋Ÿฝ ์ „์—ญ์˜ ์งˆ์ฃผ" ๋ชจ๋“œ์—์„œ. ๊ทธ๋ž˜์„œ ์ด์ œ ์ €๋Š” Horstman์˜ ์ฒซ ๋ฒˆ์งธ ๋ณผ๋ฅจ์„ ์ฃผ์˜ ๊นŠ๊ฒŒ ์‚ดํŽด๋ณด๊ณ  Java Core์— ๋Œ€ํ•œ ์ง€์‹์„ ํ†ตํ•ฉํ•˜๋Š” ๋™์‹œ์— ์ด์ „ ๋ ˆ๋ฒจ์˜ ๋‚˜๋จธ์ง€ ์ž‘์—…์„ ์™„๋ฃŒํ•œ ๋‹ค์Œ ๋ ˆ๋ฒจ์„ ์ง„ํ–‰ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒฉํ† ๋ฆฌ์–ผ์— ๊ด€ํ•œ ๋ ˆ๋ฒจ 15์˜ ๋ณด๋„ˆ์Šค ๋ฌธ์ œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ฒ˜๋ฆฌํ•œ ํ›„ BigDecimal ํด๋ž˜์Šค๋ฅผ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ธํ„ฐ๋„ท์—์„œ ํŠน๋ณ„ํžˆ ์ธ๊ธฐ ์žˆ๋Š” ๊ธฐ์‚ฌ๋ฅผ ์ฐพ์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์„œ๋ฅผ ์‚ดํŽด๋ณด์•˜ ๋”๋‹ˆ ๋ฌธ์„œ์˜ ์ฒซ ๋ฒˆ์งธ ๋‹จ๋ฝ์—์„œ ์ฆ‰์‹œ ๋ชจ๋“  ๊ฒƒ์ด ๋ช…ํ™•ํ•˜์ง€๋Š” ์•Š๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ง„์‹ค์˜ ์ง„์ƒ์„ ๊ทœ๋ช…ํ•˜๊ธฐ๋กœ ๊ฒฐ์‹ฌํ–ˆ๊ณ , ๋‚ด ์ž‘์—…์ด ํ—›๋˜์ง€ ์•Š๋„๋ก ๋ชจ๋“  ๊ฒƒ์„ ๊ธฐ์‚ฌ ํ˜•์‹์œผ๋กœ ํฌ๋งทํ–ˆ๊ณ  ์ง€๊ธˆ์€ ์˜๊ฒฌ ๊ตํ™˜์„ ์œ„ํ•ด ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๊ฒŒ์‹œํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์–ด์ฉŒ๋ฉด ๊ทธ๋ ‡๊ฒŒ ๋  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€์—๊ฒŒ ๋„์›€์ด ๋˜์‹ญ์‹œ์˜ค. ๊ทธ๋ž˜์„œ ์ฒซ ๋ฌธ๋‹จ์„ ๊ฐ€์ ธ์™€์„œ ๋ฌธ์žฅ์œผ๋กœ ๋‚˜๋ˆ„์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์•ˆ์—๋Š” 5๊ฐœ์˜ ๋ฌธ์žฅ๋งŒ ์žˆ์Šต๋‹ˆ๋‹ค. 3๋ฒˆ๊ณผ 4๋ฒˆ ๋ฌธ์žฅ์— ๋ฐ‘์ค„์ด ๊ทธ์–ด์ ธ ๋‹จ๋ฝ ๋์œผ๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค(๋‚ด๊ฐ€ ์ด๋ ‡๊ฒŒ ํ•œ ์ด์œ  - ๊ณ„์† ์ฝ์–ด๋ณด์„ธ์š”). ๊ทธ๋ฆฌ๊ณ  ์ด๋ ‡๊ฒŒ ๋ณ€๊ฒฝ๋œ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋ฒˆ์—ญ์ด ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์›๋ณธ ์ฒซ ๋ฒˆ์งธ ๋‹จ๋ฝ
  1. ๋ถˆ๋ณ€์˜ ์ž„์˜ ์ •๋ฐ€๋„ ๋ถ€ํ˜ธ ์žˆ๋Š” ์‹ญ์ง„์ˆ˜์ž…๋‹ˆ๋‹ค.
  2. BigDecimal์€ ์ž„์˜์˜ ์ •๋ฐ€๋„ ์ •์ˆ˜ ๋น„์Šค์ผ€์ผ ๊ฐ’๊ณผ 32๋น„ํŠธ ์ •์ˆ˜ ์Šค์ผ€์ผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  3. 0 ๋˜๋Š” ์–‘์ˆ˜์ธ ๊ฒฝ์šฐ ์Šค์ผ€์ผ์€ ์†Œ์ˆ˜์  ์˜ค๋ฅธ์ชฝ์˜ ์ž๋ฆฟ์ˆ˜์ž…๋‹ˆ๋‹ค.
  4. ์Œ์ˆ˜์ธ ๊ฒฝ์šฐ ์ˆซ์ž์˜ ์Šค์ผ€์ผ๋ง๋˜์ง€ ์•Š์€ ๊ฐ’์— ์Šค์ผ€์ผ ๋ถ€์ •์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์— 10์„ ๊ณฑํ•ฉ๋‹ˆ๋‹ค.
  5. ๋”ฐ๋ผ์„œ BigDecimal์ด ๋‚˜ํƒ€๋‚ด๋Š” ์ˆซ์ž์˜ ๊ฐ’์€ ( unscaledValue ร— 10 -scale )์ž…๋‹ˆ๋‹ค.
๋ฌธ์žฅ ์ˆœ์„œ๊ฐ€ ์žฌ๋ฐฐ์—ด๋œ ์›๋ณธ
  1. ๋ถˆ๋ณ€์˜ ์ž„์˜ ์ •๋ฐ€๋„ ๋ถ€ํ˜ธ ์žˆ๋Š” ์‹ญ์ง„์ˆ˜์ž…๋‹ˆ๋‹ค.
  2. BigDecimal์€ ์ž„์˜์˜ ์ •๋ฐ€๋„ ์ •์ˆ˜ ๋น„์Šค์ผ€์ผ ๊ฐ’๊ณผ 32๋น„ํŠธ ์ •์ˆ˜ ์Šค์ผ€์ผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  3. ๋”ฐ๋ผ์„œ BigDecimal์ด ๋‚˜ํƒ€๋‚ด๋Š” ์ˆซ์ž์˜ ๊ฐ’์€ ( unscaledValue ร— 10 -scale )์ž…๋‹ˆ๋‹ค.
  4. 0 ๋˜๋Š” ์–‘์ˆ˜์ธ ๊ฒฝ์šฐ ์Šค์ผ€์ผ์€ ์†Œ์ˆ˜์  ์˜ค๋ฅธ์ชฝ์˜ ์ž๋ฆฟ์ˆ˜์ž…๋‹ˆ๋‹ค.
  5. ์Œ์ˆ˜์ธ ๊ฒฝ์šฐ ์ˆซ์ž์˜ ์Šค์ผ€์ผ๋ง๋˜์ง€ ์•Š์€ ๊ฐ’์— ์Šค์ผ€์ผ ๋ถ€์ •์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์— 10์„ ๊ณฑํ•ฉ๋‹ˆ๋‹ค.
ํ™•์žฅ๋œ ๋ฒˆ์—ญ(๋ฒˆ์—ญ์˜ ๊ฐ ์ง€์ ์€ ์›๋ณธ์˜ ์ง€์ ์— ํ•ด๋‹น)
  1. ์ด๋Š” ์ž„์˜ ๊ธธ์ด 34 ์˜ ๋ถ€ํ˜ธ๊ฐ€ 2 ์ธ ๋ถˆ๋ณ€์˜ ๋ถ„์ˆ˜ 1 ์‹ญ์ง„์ˆ˜์ž…๋‹ˆ๋‹ค .
  2. BigDecimal ์ˆซ์ž๋Š” ๋‘ ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ์ฒซ ๋ฒˆ์งธ๋Š” ์†Œ์œ„์ž…๋‹ˆ๋‹ค. ํฌ๊ธฐ ์กฐ์ •๋˜์ง€ ์•Š์€ ๊ฐ’์€ ๊ธธ์ด๊ฐ€ ๋ฌด์ œํ•œ์ธ ์ •์ˆ˜์ž…๋‹ˆ๋‹ค. ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋งŒ ์•Œ๋ฉด BigDecimal ์ˆซ์ž์˜ ์‹ค์ œ ๊ฐ’์— ๋Œ€ํ•ด ์•„๋ฌด ๋ง๋„ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜์ธ scale์ด๋ผ๋Š” 32๋น„ํŠธ ์ •์ˆ˜๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  3. ๊ทธ๋Ÿฐ ๋‹ค์Œ BigDecimal ์ˆซ์ž์˜ ๊ฐ’์€ ๋‹ค์Œ ๊ณต์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: unscaledValue ร— 10 -scale
  4. BigDecimal์ด 0์ด๊ฑฐ๋‚˜ ์–‘์ˆ˜์ธ ๊ฒฝ์šฐ ์†Œ์ˆ˜์  ์ดํ•˜ ์ž๋ฆฟ์ˆ˜๋Š” ์†Œ์ˆ˜์  ์ดํ•˜ ์ž๋ฆฟ์ˆ˜์ž…๋‹ˆ๋‹ค.
  5. BigDecimal์ด ์Œ์ˆ˜์ด๋ฉด ์Šค์ผ€์ผ์ด ์ ์šฉ๋˜์ง€ ์•Š์€ ๊ฐ’์— ๋งˆ์ด๋„ˆ์Šค ๊ธฐํ˜ธ๊ฐ€ ์žˆ๋Š” ์Šค์ผ€์ผ๊ณผ ๋™์ผํ•œ ๊ฑฐ๋“ญ์ œ๊ณฑ์œผ๋กœ 10์„ ๊ณฑํ•ฉ๋‹ˆ๋‹ค.
๋ฒˆ์—ญ ๋…ธํŠธ
1. ๋ถ„์ˆ˜. "์ž„์˜์˜ ์ •๋ฐ€๋„"์—๋Š” ๋ฌด์—‡๋ณด๋‹ค๋„ ๋‹ค์Œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
   ์ด๋Š” ์ •ํ™•ํ•œ ์ˆซ์ž์ด๊ณ  ์ •ํ™•ํ•œ ์ˆซ์ž์—๋Š” ์†Œ์ˆ˜์ ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
   ์ฆ‰, ๋ถ„์ˆ˜์ž…๋‹ˆ๋‹ค.
2. ์ฆ‰ ๊ธ์ •์ ์ผ ์ˆ˜๋„ ์žˆ๊ณ  ๋ถ€์ •์ ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
3. "์ž„์˜์˜ ์ •๋ฐ€๋„"๋Š” ๋˜ํ•œ ์ž„์˜์˜ ๊ธธ์ด๋ฅผ ์˜๋ฏธํ•˜๋ฏ€๋กœ
   "์ž„์˜์˜ ์ž๋ฆฟ์ˆ˜."
4. ์‹ค์ œ๋กœ BigDecimal ์ˆซ์ž๋Š” ์‹ค์ˆ˜์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์„ค์น˜ ์ค‘
   ๋‹ค์–‘ํ•œ ์„ค์ •์„ ํ†ตํ•ด ๊ณผํ•™์  ๊ณ„์‚ฐ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ
   ๊ธˆ์œต ๋ถ„์•ผ์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ๋ฐ‘์ค„ ์นœ ๋ฌธ์žฅ์€ ์ €์—๊ฒŒ ๊ฐ€์žฅ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ์š”์†Œ์˜€์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ๋Š” ๊ทธ ๋ฌธ์žฅ์„ ํ…์ŠคํŠธ์—์„œ ์ œ๊ฑฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์‹ค์ œ๋กœ๋Š” ๊ฑฐ์˜ ๊ฐ™์€ ๋‚ด์šฉ์ด๊ณ  ๊ฒŒ๋‹ค๊ฐ€ ๋ฌธ์žฅ ๋ฒˆํ˜ธ 5์—์„œ ๋งํ•œ ๋‚ด์šฉ๊ณผ ๊ฑฐ์˜ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ €๊ฒƒ๋“ค. ์—ฐ์†๋œ ์„ธ ๋ฌธ์žฅ์€ ์Šค์ผ€์ผ๋ง๋˜์ง€ ์•Š์€ ๊ฐ’์— ๋งˆ์ด๋„ˆ์Šค ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์Šค์ผ€์ผ๊ณผ ๋™์ผํ•œ ๊ฑฐ๋“ญ์ œ๊ณฑ์œผ๋กœ 10์„ ๊ณฑํ•œ ๊ฒƒ๋งŒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ฒ˜์Œ ์ฝ์„ ๋•Œ ํ˜ผ๋ž€์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ฌธ์žฅ ๋ฒˆํ˜ธ 3์„ ์ฝ์„ ๋•Œ if๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์— ํ•œ ๊ฐ€์ง€๊ฐ€ ์žˆ๊ณ  ๋‹ค์Œ ๋ฌธ์žฅ์—๋Š” ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„๋‹™๋‹ˆ๋‹ค. ๋‘ ๋ฌธ์žฅ ๋ชจ๋‘ ๋™์ผํ•œ ๋‚ด์šฉ์„ ๋งํ•˜๊ณ  ์žˆ์ง€๋งŒ ๋‹จ์–ด๋งŒ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๊ธ€์Ž„์š”, ๊ฐ™์€ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์—ฐ์†๋œ ์„ธ ๋ฒˆ์งธ(๋ฌธ๋‹จ์˜ ๋งˆ์ง€๋ง‰) ๋ฌธ์žฅ์€ ์•„๋งˆ๋„ ์ปจํŠธ๋กค ์ƒท๊ณผ ๊ฐ™์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ๋ฌธ์žฅ์˜ unscaledValue ร— 10 -scale ๊ณต์‹์ด ํฐ ์ˆ˜์˜ ์ •์˜๋ฅผ ์ตœ๋Œ€ํ•œ ๋ช…ํ™•ํ•˜๊ณ  ๋ชจํ˜ธํ•˜์ง€ ์•Š์œผ๋ฉฐ ํฌ๊ด„์ ์œผ๋กœ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ…์ŠคํŠธ๊ฐ€ ์™œ ๊ทธ๋ ‡๊ฒŒ ํ˜ผ๋ž€์Šค๋Ÿฌ์šด ๋ฐฉ์‹์œผ๋กœ ์ปดํŒŒ์ผ๋˜์—ˆ๋Š”์ง€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค .
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION