16-2-6.BigDecimal

BigDecimal Ŭ·¡½º´Â Á¤¹Ðµµ°¡ ³ôÀº ½Ç¼ö¸¦ Ç¥ÇöÇÑ´Ù. ¿Ö ÀÌ·± Ŭ·¡½º°¡ ÇÊ¿äÇÑ°¡´Â double ÇüÀÇ ³»ºÎ ±¸Á¶¸¦ ¿¬±¸ÇØ º¸¸é ¾Ë ¼ö ÀÖ´Ù. ºÎµ¿ ¼Ò¼öÁ¡ ÇüÅ·Π¼ö¸¦ ÀúÀåÇÏ´Â doubleÇüÀº ½Ç¼öÀÇ ±Ù»ç°ªÀ» ÀúÀåÇÒ »Ó Á¤È®ÇÑ °ªÀ» Ç¥ÇöÇÏÁö ¸øÇÑ´Ù. ´ÙÀ½ ¿¹Á¦¸¦ º¸ÀÚ.

 

bigdecimal

class JavaTest {

      public static void main(String[] args) {

             double a = 0.3;

             double b = 0.6;

            

             double c = a + b;

             System.out.println(c);

      }

}

½ÇÇà°á°ú

0.8999999999999999

 

0.3°ú 0.6À» ´õÇßÀ¸¸é °á°ú´Â ´ç¿¬È÷ 0.9°¡ µÇ¾î¾ß ÇÏÁö¸¸ ¹Ì¼¼ÇÑ ¿ÀÂ÷°¡ ¹ß»ýÇÑ´Ù. 2ÀÇ °Åµì½ÂÀ¸·Î °¡¼ö¸¦ Ç¥ÇöÇÏ´Â ºÎµ¿ ¼Ò¼öÁ¡Àº 10Áø¼ö¿Í Àß ¸ÂÁö ¾Ê´Ù. ¿ÀÂ÷À²Àº 1/1°æÀÌ¸ç °íµµÀÇ Á¤¹Ðµµ¸¦ ¿äÇϴ õ¹®Çп¡¼­µµ ¿ëÀεǴ ¼öÁØÀÌ´Ù. È­¸é ÁÂÇ¥³ª »ö»ó°ª, º¼·ý µîÀ¸·Î »ç¿ëµÈ´Ù¸é »ç¶÷ÀÌ ÀÌ ¿ÀÂ÷¸¦ ±¸ºÐÇÏ´Â °ÍÀº ºÒ°¡´ÉÇÏ´Ù.

±×·¯³ª ¾î·°Å³ª ¿ÀÂ÷´Â ¹ß»ýÇßÀ¸¸ç °áÁ¤ÀûÀ¸·Î Ãâ·Â °á°ú°¡ µü ¶³¾îÁöÁö ¾Ê¾Æ º¸±â¿¡ Á÷°üÀûÀÌÁö ¸øÇÏ´Ù´Â °ÍÀÌ ¹®Á¦´Ù. È­Æó ´ÜÀ§´Â Á¶±Ý¸¸ ´Þ¶óµµ °í°´ÀÇ Ç×ÀÇ°¡ ¹ß»ýÇÒ ¼ö ÀÖÀ¸¸ç ÅëÀå¿¡ ÂïÈ÷´Â Àܾ×ÀÌ 28743999.999999999¿ø µûÀ§¿©¼­´Â °ï¶õÇÏ´Ù. ÀÌ Á¤µµ ¿ÀÂ÷µµ Çã¿ëÇÒ ¼ö ¾øÀ» ¶§ »ç¿ëÇϴ Ŭ·¡½º°¡ ¹Ù·Î BigDecimalÀÌ´Ù. °£´ÜÇÏ°Ô »ç¿ë¿¹¸¸ ±¸°æÇØ º¸ÀÚ.

 

bigdecimal2

½ÇÇà°á°ú

import java.math.*;

 

class JavaTest {

      public static void main(String[] args) {

             BigDecimal a = new BigDecimal("0.3");

             BigDecimal b = new BigDecimal("0.6");

            

             BigDecimal c = a.add(b);

             System.out.println(c);

      }

}

0.9

 

double ŸÀÔ ´ë½Å BigDecimal °´Ã¼¸¦ »ç¿ëÇÏ¸é ¿ÀÂ÷¾øÀÌ Á¤È®ÇÑ °ªÀ» ±¸ÇÒ ¼ö ÀÖ´Ù. µÎ °³ÀÇ BigDecimal °´Ã¼¸¦ »ý¼ºÇÑ ÈÄ add ¸Þ¼­µå·Î ´õÇØ ±× °á°ú¸¦ Ãâ·ÂÇß´Ù. BigInteger¿Í ³»ºÎÀûÀÌ ±¸¼ºÀ̳ª ¿ø¸®°¡ °ÅÀÇ ºñ½ÁÇÏ¸ç ¸ðµç ¿¬»êÀº ¸Þ¼­µå·Î ¼öÇàÇÑ´Ù´Â Á¡µµ µ¿ÀÏÇÏ´Ù.

BigDecimalÀÇ »ý¼ºÀÚ·Î Àü´ÞµÇ´Â ½Ç¼ö°ªÀº ¹Ýµå½Ã ¹®ÀÚ¿­À̾î¾ß ÇÑ´Ù. double ŸÀÔÀ¸·Î Àü´ÞÇÒ ¼öµµ ÀÖÁö¸¸ ÀÌ·¸°Ô µÇ¸é »ý¼ºÀÚ¿¡¼­ ¹Þ´Â ÃʱⰪ ÀÚü¿¡ ¹ú½á ¿ÀÂ÷°¡ ³»ÀçµÇ¾î ÀÖ¾î Á¤È®ÇÑ °á°ú¸¦ ¾òÀ» ¼ö ¾ø´Ù. double ŸÀÔÀº Å»ýÀûÀ¸·Î ¿ÀÂ÷°¡ ÀÖÀ» ¼ö¹Û¿¡ ¾ø¾î ¸ðµç ¼öÄ¡ Ç¥ÇöÀ» ¹®ÀÚ¿­·Î ÇØ¾ß Á¤È®ÇÏ´Ù.