float a = 2.0f/3.0f;
printf("%f\n",a);
Çϸé 0.66667 ¿ä·¸°Ô ³ª¿À°Åµç¿ä. ¿©±â¿¡¼
float b = 3.0f*a;
printf("%f\n",b);
Çϸé 3.0*0.66667 = 2.00001 À̾î¾ß Çϴµ¥, 2.00000 À̶ó°í Á¦´ë·Î ³ª¿Í¿ä. ³»ºÎÀûÀ¸·Î ¾î¶² °úÁ¤ÀÌ ¼û¾î ÀÖÀ»±î¿ä?
Á¦°¡ ¼öÄ¡Çؼ® ¼ö¾÷¿¡¼ floating point system À» ¹è¿ì¸é¼ ÄÄÇ»ÅÍ¿¡¼´Â ¹«ÇÑ ¼Ò¼ö¸¦ Ç¥ÇöÇÒ ¼ö ¾ø±â ¶§¹®¿¡ ¹Ý¿Ã¸² ¶Ç´Â ¹ö¸²À» ÇÏ°Ô µÇ°í ÀÌ ¶§ ¹ß»ýÇÑ ¿ÀÂ÷°¡ ½×ÀÏ ¼ö ÀÖ´Ù´Â °ÍÀ» ¹è¿ü´ø ±â¾ïÀÌ ÀÖ½À´Ï´Ù. ±×·¡¼ ¿ªÇà·ÄÀ» ±¸ÇÏ´Â °¡¿ì½º ¼Ò°Å¹ýÀ» ÇÒ ¶§´Â ÇǺ¸Æà °°Àº °É Çؼ ¿ÀÂ÷¸¦ ÃÖ¼ÒÈÇÏ´Â °ÍÀ» º¸±âµµ Çß°í¿ä. ¿À´Ã °©ÀÚ±â ±× »ý°¢ÀÌ ³ª¼ À§ÀÇ Äڵ带 Â¥¼ Å×½ºÆ® Çغ»°Çµ¥, ¿¹Á¦°¡ ³Ê¹« °£´ÜÇؼ ±×·± °ÇÁö, ¾Æ´Ï¸é C ÀÚüÀûÀ¸·Î À¯¸® ¹«ÇÑ ¼Ò¼ö¸¦ Ä¿¹öÇÏ´Â ¾Ë°í¸®Áò(?)À̳ª ±â´ÉÀÌ ÀÖ´Â °ÇÁö ±Ã±ÝÇϳ׿ä.
(Âü°í. Ȥ½Ã Ç¥Çö¸¸ ¹Ý¿Ã¸²À» Çؼ Àú·¸°Ô µÇ´Â °Ç°¡ Çؼ printf("%.100f\n",a); ¸¦ Çغôõ´Ï 0.666666686534881......00000000 À¸·Î ¶¹¾î¿ä. ¿©±â¿¡ 3.0À» °öÇؼ Á¤È®ÇÏ°Ô 2°¡ µÉ °Í °°Áö ¾ÊÀºµ¥ °öÇÑ °á°ú´Â 2.000000....0000 À¸·Î Á¤È®ÇÏ°Ô ³ª¿À´õ±º¿ä.)
Áú¹® | 1199¸íÀÌ Àоú¾î¿ä. 18.117.166.170