[ 1Àå, 2Àå, 3Àå, 4Àå, 5Àå, 6Àå, 7Àå, 8Àå, 9Àå, 10Àå, 11Àå, 12Àå, 13Àå, 14Àå, 15Àå, 16Àå, 17Àå, 18Àå, 19Àå, 20Àå, 21Àå, 22Àå, 23Àå, 24Àå, 25Àå, 26Àå, 27Àå, ºÎ·ÏA, ºÎ·ÏB,C, ºÎ·ÏD, GNU C ¶óÀ̺귯¸® ¸ñ·Ï ]

À̱ÛÀº ÇÏÀÌÅÚ ¼ÒÇÁÆ®¿þ¾îµ¿È£È¸ÀÇ ¼Ò¸ðÀÓÀÎ Á÷ÀåÀÎÀ» À§ÇÑ ¾¾¸ðÀÓ¿¡¼­ ÀåÀå 2³â°£ÀÇ ´ëÀåÁ¤À¸·Î ¹ø¿ªµÇ¾îÁø ¹®¼­ÀÔ´Ï´Ù. Áö±ÝÀº Á÷¾¾ÀåÀ» Áö³»°í ÀÖ´Â ±è¼Ò¿µ(flpigy)´Ô°ú Á¶¿øºÀ(thirnine)´Ô, °í¼®°©´Ô(sukgab)ÀÇ °øµ¿¹ø¿ªÀÔ´Ï´Ù.

14.Àú-¼öÁØ ¿¬»ê ÇÔ¼öµé.

14.1 "¼ýÀÚ°¡ ¾Æ´Ñ" °ªµé.

´ëºÎºÐÀÇ Çö´ëÀû ÄÄÇ»Å͵鿡¼­ »ç¿ëµÇ´Â IEEE ÇÃ·ÎÆÃ Æ÷ÀÎÆ® Çü½ÄÀº "¼ýÀÚ°¡ ¾Æ´Ñ" °ªµéµµ Áö¿øÇÑ ´Ù. ÀÌµé °ªµéÀº NaNs ¶ó°í ºÒ¸°´Ù. "¼ýÀÚ°¡ ¾Æ´Ñ" °ªµéÀº 0À» 0À¸·Î ³ª´©°Å³ª ¶Ç´Â ¹«ÇѴ븦 ¹« ÇÑ´ë·Î ³ª´©´Â °Í°ú °°ÀÌ, ¾Æ¹«·± Àǹ̾ø´Â ¼ýÀÚ °á°ú¸¦ °®´Â ¾î¶² ¸í·Éµé·ÎºÎÅÍÀÇ °á°úÀÌ´Ù.

NaNsÀÇ ÁÖ¸ñÇÒ ¸¸ÇÑ Æ¯¼ºÁßÀÇ Çϳª°¡ ±×µéÀº ±×µé ÀڽŰú µ¿µîÇÏÁö ¾Ê´Ù´Â °ÍÀÌ´Ù. ±×·¡¼­, x == x ½Ä¿¡¼­ ¸¸ÀÏ x°¡ NaN À̶ó¸é ±× °á°ú´Â 0ÀÌ µÉ ¼ö ÀÖ´Ù. ´ç½ÅÀº ¾î¶² °ªÀÌ NaN ÀÎÁö ¾Æ´ÑÁö¸¦ Å×½ºÆ®Çϱâ À§Çؼ­ À̰ÍÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù: ¸¸ÀÏ ±×°ÍÀÌ ±× ÀڽŰú °°Áö ¾Ê´Ù¸é, ±×°ÍÀº NaNÀÌ´Ù. ±×·¯³ª NaN ÀÎÁö¸¦ Å×½ºÆ® ÇϱâÀ§ÇÑ ±ÇÀåÇÒ ¸¸ÇÑ ¹æ¹ýÀ¸·Î´Â isnan ÇÔ¼ö°¡ ÀÖ´Ù. ( 14.2Àý [Predicates on Floats], 209 ÆäÀÌÁö ÂüÁ¶.)

NaNÀ» ÇÑ Àμö·Î »ç¿ëÇÑ °ÅÀÇ ¸ðµç ¿¬»ê ¸í·Éµé¿¡¼­´Â ¿ª½Ã NaNÀÌ ¸®ÅϵȴÙ.

¸ÅÅ©·Î : double NAN

"¼ýÀÚ°¡ ¾Æ´Ñ" °ªµéÀº Ç¥ÇöÇϴµ¥ »ç¿ë. ÀÌ ¸ÅÅ©·Î´Â GNU È®ÀåÀ¸·Î, IEEE ÇÃ·ÎÆÃ Æ÷ÀÎÆ®¸¦ Áö¿øÇÏ ´Â ¸ðµç ±â°è»ó¿¡¼­, ±×µéÀÌ ¸»ÇÏ´Â, Áï, "¼ýÀÚ°¡ ¾Æ´Ñ" °ªµéÀº Áö¿øÇÏ´Â ±â°è»ó¿¡¼­¸¸ À¯¿ëÇÏ´Ù.

´ç½ÅÀº ±× ±â°è°¡ NaNs ¸¦ Áö¿øÇÏ´ÂÁöÀÇ ¿©ºÎ¸¦ ¾Ë¾Æº¸±â À§Çؼ­ '#ifdef NAN'À» »ç¿ëÇÒ ¼ö ÀÖ´Ù. (¹°·Ð, ´ç½ÅÀº _GNU_SOURCE·Î Á¤ÀÇÇØ¼­, GNU È®ÀåÀ¸·Î Á¤¸®¸¦ ÇØ¾ß Çϰí, ¶ÇÇÑ 'math.h'¸¦ Æ÷ÇÔ ÇØ¾ß¸¸ÇÑ´Ù.)

14.2 ÇÃ·ÎÆ®ÀÇ ¼ú¾î(Predrcates).

ÀÌ ÀýÀº doubles ÀÇ Àâ´ÙÇÑ Å×½ºÆ® ÇÔ¼öµéÀ» ¼³¸íÇÑ´Ù. ÀÌ ÇÔ¼öµéÀ» À§ÇÑ ÇÁ·ÎÅäŸÀÔÀº 'math.h' ¿¡ ÀÖ´Ù. ±×°ÍµéÀº BSD ÇÔ¼ö·Î ´ç½ÅÀÌ _BSD_SOURCE ¶Ç´Â _GNU_SOURCE¶ó°í Á¤ÀÇÇßÀ» ¶§ À¯ ¿ëÇÏ´Ù.

ÇÔ¼ö : int isinf (double x)

ÀÌ ÇÔ¼ö´Â x °¡ ¹«ÇÑ´ëÀÇ À½¼ö¶ó¸é -1À» ¸®ÅÏÇϰí, x °¡ ¹«ÇÑ´ëÀÇ ¾ç¼öÀ̸é 1À» ¸®ÅÏÇϰí, ±×·¸Áö ¾ÊÀ¸¸é 0À» ¸®ÅÏÇÑ´Ù.

ÇÔ¼ö : int isnan (double x)

ÀÌ ÇÔ¼ö´Â ¸¸ÀÏ x°¡ "¼ýÀÚ°¡ ¾Æ´Ñ" °ÍÀ̶ó¸é 0ÀÌ ¾Æ´Ñ°ªÀ» ¸®ÅÏÇϰí, ±×·¸Áö ¾ÊÀ¸¸é 0À» ¸®ÅÏÇÑ´Ù. ( ´ç½ÅÀº °°Àº °á°ú¸¦ ¾ò±âÀ§Çؼ­ x != x µµ »ç¿ëÇÒ ¼ö ÀÖ´Ù.)

ÇÔ¼ö : int finite (double x)

ÀÌ ÇÔ¼ö´Â ¸¸ÀÏ x °¡ ÇÑÁ¤µÈ °ªÀ̰ųª, "¼ýÀÚ°¡ ¾Æ´Ñ" °ªÀ̶ó¸é 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇϰí, ±×·¸Áö ¾Ê ´Ù¸é 0À» ¸®ÅÏÇÑ´Ù.

ÇÔ¼ö : double infnan (int error)

ÀÌ ÇÔ¼ö´Â BSD ¿ÍÀÇ È£È¯¼ºÀ» À§ÇØ Á¦°øµÇ¾ú´Ù. ´Ù¸¥ ¼öÇÐÀû ÇÔ¼öµéÀÌ ¿¡·¯°¡ ¹«¾ù ¶§¹®¿¡ ¹ß»ýÇß ´ÂÁö¸¦ ¾Ë±âÀ§Çؼ­ infanÀ» »ç¿ëÇÑ´Ù. Àμö·Î´Â EDOM À̳ª ERANGE °°Àº ¿¡·¯ Äڵ带 »ç¿ëÇϰí; À̶§ infanÀº ÀÌ ¿¡·¯¿¡ Àû´çÇÑ °ªÀ» ¸®ÅÏÇÑ´Ù.

-ERANGE

ÀÌ°Í ¶ÇÇÑ Àμö·Î½á ¹Þ¾Æµé¿©Áö°í, -HUGE_VAL¿¡ ÇØ´çÇÑ´Ù. BSD¶óÀ̺귯¸®·Î´Â, ¾î¶² ±â°è»ó¿¡ ¼­, infnan ÇÔ¼ö´Â ¸ðµç °æ¿ì¿¡ ½É°¢ÇÑ ½ÅÈ£¸¦ ¹ß»ý½ÃŲ´Ù. GNU ¶óÀ̺귯¸®´Â ANSI C ±Ô°Ý¿¡ ¸Â Áö ¾Ê±â ¶§¹®¿¡ ÀÌ·¯ÇÑ ÀÏÀ» ÇÏÁö ¾Ê´Â´Ù.

À̽ļº ³ëÆ® : ÀÌ Àý¿¡¼­ ¼³¸íµÈ ÇÔ¼öµéÀº BSD È®ÀåÀÌ´Ù.

14.3 Àý´ë°ª.

À̵é ÇÔ¼öµéÀº ÇÑ ¼ýÀÚÀÇ Àý´ë°ª( Å©±â°¡ ¾Æ´Ñ )À» ¾ò±âÀ§Çؼ­ Á¦°øµÈ´Ù. ½Ç¼ö x ÀÇ Àý´ë°ªÀº x °¡ ¾çÀÇ ¼ö¶ó¸é x À̰í, x °¡ À½ÀÇ ¼ö¶ó¸é -x °¡ µÈ´Ù. º¹¼Ò¼ö z ¿¡¼­, ±× ¼öÀÇ ½Ç¼öºÎ x ¿Í Çã¼öºÎ y °¡ ÀÖ´Ù¸é, ±×¶§ ±× ¼öÀÇ Àý´ë°ªÀº sqrt(x*x + y*y) ÀÌ´Ù.

abs ¿Í labs ´Â 'stdlib.h'ÀÇ ÇÁ·ÎÅäŸÀÔÀº °®°í; fabs ¿Í cabs´Â 'math.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.

ÇÔ¼ö : int abs (int number)

ÀÌ ÇÔ¼ö´Â ¼öÀÇ Àý´ë°ªÀ» ¸®ÅÏÇÑ´Ù. ´ëºÎºÐÀÇ ÄÄÇ»ÅÍ´Â 2ÀÇ º¸¼ö(two's complement) Á¤¼ö Ç¥ÇöÀ» »ç¿ëÇÑ´Ù. ÇÏÁö¸¸ 2ÀÇ º¸¼ö´Â INT_MIN ( °¡´ÉÇÑ °¡ÀåÀÛÀº int )ÀÇ Àý´ë°ªÀº Ç¥Çö ÇÒ ¼ö ¾ø±â ¶§¹® ¿¡; ±×·¡¼­, abs (INT_MIN)Àº Á¤ÀǵÇÁö ¾Ê¾Ò´Ù.

ÇÔ¼ö : long int labs (long int number)

ÀÌ ÇÔ¼ö´Â abs°¡ int ÇüÀ» »ç¿ëÇÏ´Â ´ë½Å, Àμö¿Í °á°ú°ª¿¡ long int ÇüÀ» »ç¿ëÇÑ´Ù´Â Á¡À» Á¦¿ÜÇÏ°í ´Â abs¿Í À¯»çÇÏ´Ù.

ÇÔ¼ö : double fabs (double number)

ÀÌ ÇÔ¼ö´Â ÇÃ·ÎÆÃ-Æ÷ÀÎÆ® ¼öÀÇ Àý´ë°ªÀ» ¸®ÅÏÇÑ´Ù.

ÇÔ¼ö : double cabs (struct { double real, imag; } z)

cabs ÇÔ¼ö´Â ½Ç¼öºÎ·Î z.read °ú Çã¼öºÎ·Î z.imag¸¦ °®°í ÀÖ´Â, º¹¼Ò¼ö z ÀÇ Àý´ë°ªÀ» ¸®ÅÏÇÑ´Ù. ( 13.4Àý [Exponents and Logarithm] 205 ÆäÀÌÁö¿¡¼­ hypot ÇÔ¼ö¸¦ ÂüÁ¶Ç϶ó. ) ±× °ªÀº :

sqrt (z.real*z.real + z.imag*z.imag)

14.4 Ç¥ÁØÈ­ ÇÔ¼öµé.

ÀÌ Àý¿¡¼­ ¼³¸íµÈ ÇÔ¼öµéÀº, ³»ºÎÀûÀ¸·Î 2Áø ±â¼ö(binary radix)¸¦ »ç¿ëÇÏ¿© Ç¥ÇöµÇ´Â, ÇÃ·ÎÆÃ Æ÷ÀÎ Æ®¿¡¼­ ÀϾ´Â Àú-¼öÁØ µ¿ÀÛµéÀ» È¿À²ÀûÀ¸·Î ¼öÇàÇϱâ À§ÇÑ ¹æ¹ýÀ» Á¦°øÇÑ´Ù; A.5.3.1Àý [Floating Point Comcepts] 389 ÆäÀÌÁö ÂüÁ¶. À̵é ÇÔ¼öµéÀº ¸¸ÀÏ ¾î¶² Ç¥ÇöÀÌ 2Áø¼ö¸¦ »ç¿ëÇÏÁö ¾ÊÀ» ¶§¶óµµ °°Àº µ¿ÀÛÀ» Çϵµ·Ï ÇÒ Çʿ䰡 ÀÖÁö¸¸, ¹°·Ð ±×µéÀº ±× °æ¿ì¿¡ Ưº°È÷ È¿À²ÀûÀÌ°Ô º¸ÀÌÁö´Â ¾Ê´Â´Ù.

À̵é ÇÔ¼öµé ¸ðµÎ´Â 'math.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.

ÇÔ¼ö : double frexp (double value, int *exponent)

frexp ÇÔ¼ö´Â ¼ýÀÚ¸¦ °¡¼öºÎ°ú Áö¼öºÎ·Î ºÐ¸®Çϴµ¥ »ç¿ëµÈ´Ù. ¸¸ÀÏ ±× Àμö°¡ 0ÀÌ ¾Æ´Ï¸é, ¸®Åϰª Àº °¡¼öºÎÀÇ °ªÀÌ ¸®Åϵǰí, ±×°ÍÀº Ç×»ó 1/2 (Æ÷ÇÔ) ¿¡¼­ 1(Á¦¿Ü)ÀÇ ¹üÀ§¾È¿¡ ÀÖ´Ù. Áö¼öºÎ´Â *exponent ¿¡ ÀúÀåµÈ´Ù; ¸®Åϰª¿¡ ÀÌ 2ÀÇ Áö¼ö½ÂÀ» °öÇϸé ÇÏ¸é ¿ø·¡ÀÇ ¼ýÀÚ°ª°ú °°´Ù.

¿¹¸¦µé¾î, frexp (12.8, &exponent) ´Â 0.8 À» ¸®ÅÏÇϰí exponent ¿¡ 4¸¦ ÀúÀåÇÑ´Ù. ¸¸ÀÏ °ªÀÌ 0 À̸é, ¸®ÅϰªÀº 0À̰í *exponent¿¡ 0ÀÌ ÀúÀåµÇ¾î Áø´Ù.

ÇÔ¼ö : double ldexp (double value, int exponent)

ÀÌ ÇÔ¼ö´Â 2ÀÇ exponent½ÂÀÇ °ª¿¡´Ù, ÇÃ·ÎÆÃ Æ÷ÀÎÆ®°ªÀÎ value¸¦ °öÇÑ °á°ú¸¦ ¸®ÅÏÇÑ´Ù. ( ±×°ÍÀº frexp¿¡ ÀÇÇØ ¶³¾îÁö°Ô µÇ¾ú´ø ÇÃ·ÎÆÃ-Æ÷ÀÎÆ®ÀÇ °ªÀ» ºÙÀ̴µ¥ »ç¿ëµÉ ¼ö ÀÖ´Ù. )

¿¹¸¦ µé¾î, ldexp (0.8, 4) ´Â 12.8 À» ¸®ÅÏÇÑ´Ù.

´ÙÀ½ ÇÔ¼öµéÀº BSD¸¦ À§ÇÑ ÇÔ¼öµé·Î ldexp ¿Í frexp ¿Í µ¿µîÇÏ´Ù.

ÇÔ¼ö : double scalb (double value, int exponent)

scalb ÇÔ¼ö´Â BSD¿ë ldexpÀÌ´Ù.

ÇÔ¼ö : double logb (double x)

ÀÌ BSD ÇÔ¼ö´Â 2¸¦ ¹ØÀ¸·Î ÇÏ´Â ·Î±× x °ª¿¡¼­ Á¤¼ö ºÎºÐÀ» doubleÇüÀ¸·Î ¸®ÅÏÇÑ´Ù. À̰ÍÀº x ¿¡ Æ÷ÇÔµÈ 2ÀÇ °¡Àå ³ôÀº Á¤¼ö ½ÂÀÌ´Ù. xÀÇ ºÎÈ£´Â ¹«½ÃµÈ´Ù. ¿¹¸¦ µé¾î, logb (3.5) ´Â 1.0 À̰í logb(4.0)Àº 2.0 ÀÌ´Ù.

¿ªÀÚÁÖ : Áï 3.5´Â 2 + 1.5 °¡ µÇ¹Ç·Î... 2ÀÇ °¡Àå ³ôÀº Á¤¼ö½ÂÀ̶ó¸é 1.0ÀÌ µÇ´Â°ÍÀ̰í, 4.0 Àº 2 ÀÇ 2½ÂÀ̹ǷΠ2.0ÀÌ µÈ´ä´Ï´Ù.

±× °á°ú°ªÀº 2ÀÇ Áö¼ö·Î ÇÑ °ªÀÌ x ·Î ³ª´µ¾îÁú ¶§, ±×°ÍÀº 1 (Æ÷ÇÔ)°ú 2 (Á¦¿Ü) »çÀÌÀÇ °ªÀÌ ÁÖ¾îÁø ´Ù. ¸¸ÀÏ x °¡ 0À̸é, ±×°ªÀº À½ÀÇ ¹«ÇÑ´ëÀ̰í,(¸¸ÀÏ ±× ±â°è°¡ ±×¿Í°°Àº °ªÀ» Áö¿øÇÑ´Ù¸é ), ¾Æ´Ï ¸é, ¸Å¿ì ÀÛÀº °ªÀ̵ȴÙ. ¸¸ÀÏ x °¡ ¹«ÇÑ´ëÀ̸é, ±× °ªµµ ¹«ÇÑ´ëÀÌ´Ù. logb¿¡ ¸®ÅÏµÈ °ªÀº frexp°¡ *exponent¿¡ ÀúÀåÇÑ °ªº¸´Ù Çϳª°¡ Àû´Ù.

ÇÔ¼ö : double copysign (double value, double sign)

copysign ÇÔ¼ö´Â valueÀÇ Àý´ë°ªÀ» ¸®ÅÏÇϰí, signÀº ±× ¼öÀÇ ºÎÈ£¿Í ÀÏÄ¡½ÃŲ´Ù. À̰ÍÀº BSD ÇÔ¼ö ÀÌ´Ù.

14.5 ¶ó¿îµù°ú ³ª¸ÓÁö ÇÔ¼öµé.

¿ªÀÚÁÖ: Rounding(¶ó¿îµù): ¶ó¿îµùÀ̶õ ¿ø·¡ ¼öÇп¡¼­ ¼öÄ¡¸¦ Ç¥Çö Çϱâ À§Çؼ­ À¯È¿ÀÚ¸® ¼ýÀÚÀÇ Å©±â¸¦ À¯ÁöÇÏ´Â ¹æ¹ýÀε¥..À̰÷¿¡¼­´Â ÇÃ·ÎÆÃ-Æ÷ÀÎÆ®¸¦ Á¤¼öÈ­ ÇÏ´Â ¿©·¯ °¡Áö ¹æ¹ýµéÀ» ÅëÆ²¾î ¶ó¿îµùÀ̶ó°í Ç¥ÇöÇß½À´Ï´Ù.

À̰÷¿¡¼­ ¼³¸íµÈ ÇÔ¼öµéÀº ÇÃ·ÎÆÃ Æ÷ÀÎÆ®ÀÇ ³ª´©±â¿¡¼­, ¶ó¿îµù, Àý´Ü, ±×¸®°í ³ª¸ÓÁö¿Í °°Àº µ¿ÀÛ À» ¼öÇàÇÏ´Â ÇÔ¼öµéÀÌ´Ù. À̵é ÇÔ¼öÁß ¾î¶² °ÍÀº ÇÃ·ÎÆÃ Æ÷ÀÎÆ® ¼ýÀÚµéÀº Á¤¼ö°ªÀ¸·Î º¯°æÇÑ´Ù. ±× µéÀº ¸ðµÎ 'math.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.

´ç½ÅÀº ¶ÇÇÑ ÇÃ·ÎÆÃ-Æ÷ÀÎÆ® ¼ýÀÚ¸¦ int ·Î °£´ÜÈ÷ ij½ºÆ®(casting) ÇÔÀ¸·Î½á Á¤¼ö·Î º¯°æÇÒ ¼ö ÀÖ ´Ù. À̰ÍÀº ¼Ò¼öºÎ¸¦ ¹ö¸°´Ù. ÇÏÁö¸¸, À̰ÍÀº ±× °á°ú°ªÀÌ ½ÇÁ¦·Î int ·Î½á Ç¥Çö°¡´ÉÇÒ ¶§ ÀÛ¾÷Çϰí_

¾ÆÁÖ ¸Å¿ì Å« ¼öÀÇ °æ¿ì¿¡´Â ºÒ°¡´ÉÇÏ´Ù. ÀÌ Àý¿¡ ÀÖ´Â ÇÔ¼öµéÀº ÀÌ·¯ÇÑ ¹®Á¦¸¦ À¯µµÇÏ´Â ´ë½Å¿¡ doubleÇüÀ¸·Î ¸®ÅÏÇÑ´Ù.

ÇÔ¼ö : double ceil (double x)

ceil ÇÔ¼ö´Â ±ÙÁ¢ÇÑ Á¤¼ö·Î x¸¦ ¿Ã¸²À» ÇÏ°í ±× °ªÀ» doubleÇüÀ¸·Î ¸®ÅÏÇÑ´Ù. ±×·¡¼­, ceil (1.5)´Â 2.0ÀÌ´Ù.

ÇÔ¼ö : double floor (double x)

ceil ÇÔ¼ö´Â ±ÙÁ¢ÇÑ Á¤¼ö·Î x¸¦ ³»¸²À»Çؼ­, ±× °ªÀ» doubleÇüÀ¸·Î ¸®ÅÏÇÑ´Ù. ±×·¡¼­, floor (1.5)´Â 1.0 À̰í, floor(-1.5)´Â -2.0ÀÌ´Ù.

ÇÔ¼ö : double rint (double x)

ÀÌ ÇÔ¼ö´Â ÇöÀçÀÇ ¶ó¿îµùÀÇ ¸ðµå¿¡ µû¶ó¼­ x¸¦ Á¤¼ö°ªÀ¸·Î ¸¸µç´Ù. A.5.3.2Àý [Floating Point Parameters] 390 ÆäÀÌÁö¿¡¼­ ´Ù¾çÇÑ ¶ó¿îµù¸ðµåµé¿¡ ´ëÇÑ Á¤º¸¸¦ ÂüÁ¶Ç϶ó. µðÆúÆ® ¶ó¿îµù ¸ðµå´Â °¡Àå ±ÙÁ¢ÇÑ ¼ö·Î ¸¸µå´Â °ÍÀÌ´Ù. ¾î¶² ±â°è¿¡¼­´Â ´Ù¸¥ ¸ðµå¸¦ Áö¿øÇÏÁö¸¸, °¡Àå ±ÙÁ¢ÇѼö·ÎÀÇ ¶ó ¿îµù(round-to-nearest)Àº ´ç½ÅÀÌ ¸í½ÃÀûÀ¸·Î ´Ù¸¥ °ÍÀ» ¼±ÅÃÇÒÁö¶óµµ Ç×»ó »ç¿ëµÈ´Ù.

ÇÔ¼ö : double modf (double value, double *integer_part)

ÀÌ ÇÔ¼ö´Â Àμö value¸¦ Á¤¼öºÎºÐ°ú ¼Ò¼öºÎºÐ( -1°ú 1À» Á¦¿ÜÇÑ ±× »çÀÌÀÇ °ª)À¸·Î ºÐÇØÇÑ´Ù. ±×µé ÀÇ ÇÕÀº value¿Í °°´Ù. ±× °¢ ºÎºÐµéÀº value¿Í °°Àº ºÎÈ£¸¦ °®±â ¶§¹®¿¡, Á¤¼öºÎºÐÀÇ ¶ó¿îµùÀº 0À» ¿Ã¸²°ú °°´Ù. modf´Â *integer`part¿¡ Á¤¼öºÎºÐÀ» ÀúÀåÇϰí, ¼Ò¼öºÎºÐÀ» ¸®ÅÏÇÑ´Ù. ¿¹¸¦ µé¾î, modf (2.5, &intpart) ´Â 0.5¸¦ ¸®ÅÏÇϰí, intpart¿¡ 2.0À» ÀúÀåÇÑ´Ù.

ÇÔ¼ö : double fmod (double numerator, double denominator)

ÀÌ ÇÔ¼ö´Â denominator·Î numerator¸¦ ³ª´«°ÍÀÇ ³ª¸ÓÁö°ªÀ» °è»êÇÑ´Ù. Ưº°È÷, nÀÌ denominator ·Î numeratorÀ» ³ª´« ¸òÀÏ ¶§, ±× ¸òÀ» Á¤¼ö·Î ¼Ò¼öÁ¡ µÚ¸¦ ¹ö¸®°í, ±× ¸®ÅϰªÀº numerator-n*denominator ÀÌ´Ù. ±×·¡¼­, fmod(6.5, 2.3)ÀÇ ¸®ÅϰªÀº 6.5¿¡¼­ 4.6À» »«, 1.9°¡ µÈ´Ù.

¿ªÀÚÁÖ : Áï...6.5-(6.5/2.3)*2.3 = 6.5-2*2.3 = 6.5-4.6ÀÌ µÈ´Ù À̰ÅÁÒ..¿Ö ÀÌ·¸°Ô ¾î·Æ°Ô ÇÒ±ø~

±× °á°ú´Â numerator°ú °°Àº ºÎÈ£¸¦ °®°í denominatorÀÇ magnitude º¸´Ù ÀûÀº magnitude ¸¦ °®´Â ´Ù. ¸¸ÀÏ denominatorÀÌ 0À̸é, fmod´Â ½ÇÆÐÇϰí errno¸¦ EDOMÀ¸·Î ¼³Á¤ÇÑ´Ù.

ÇÔ¼ö : double drem (double numerator, double denominator)

drem ÇÔ¼ö´Â ¼Ò¼öÁ¡ ÀÌÇÏÀÇ ¼ö¸¦ ¹ö¸®´Â ´ë½Å °¡Àå °¡±î¿î Á¤¼ö·Î ¸ò nÀ» ¶ó¿îµùÀ» ÇÑ´Ù´Â °ÍÀ» Á¦ ¿ÜÇϰí´Â fmod¿Í °°´Ù. ¿¹¸¦µé¾î, drem ( 6.5, 2.3) Àº 6.5-6.9 À̹ǷΠ-0.4 ¸¦ ¸®ÅÏÇÑ´Ù. °á°úÀÇ Àý ´ë°ªÀº denominatorÀÇ Àý´ë°ªÀÇ ¹Ý°ú °°°Å³ª ´õ Àû´Ù. fmod (numerator, denominator) °ú drem (numerator, denominator) °úÀÇ Â÷À̰¡ denominator, minus denominator, ¶Ç´Â 0 À̰ųª Ç×»ó Á¸Àç ÇÑ´Ù. ¸¸ÀÏ denominator ÀÌ 0À̸é, drem Àº ½ÇÆÐÇϰí, errno¸¦ EDOMÀ¸·Î ¼³Á¤ÇÑ´Ù.

14.6 Á¤¼ö ³ª´©±â.

ÀÌ ÀýÀº Á¤¼ö ³ª´°¼ÀÀ» ¼öÇàÇϱâ À§ÇÑ ÇÔ¼öµéÀ» ¼³¸íÇÑ´Ù. GNU C ¶óÀ̺귯¸®¿¡ ÀÖ´Â ÇÔ¼öµé¿¡¼­ '/' ¿¬»êÀÚ´Â Ç×»ó ¼Ò¼öÁ¡ ÀÌÇϸ¦ ¹ö¸®´Â ¹æ½ÄÀ¸·Î ¹ö¸²(round)À» ÇàÇÏÁö¸¸, ´Ù¸¥ C ¿¡¼­ '/' ´Â À½ ÀÇ Àμö¿¡´Â ´Ù¸£°Ô ¹ö¸²(round)¸¦ ÇàÇÒ °ÍÀÌ´Ù. div ¿Í ldiv ´Â ¾î¶»°Ô ¸ò¿¡ ¹ö¸²(round)À» ÇÒ°ÍÀÎ Áö¸¦ Á¤Çϱ⠶§¹®¿¡ À¯¿ëÇÏ´Ù: ¼Ò¼öÁ¡ ÀÌÇϸ¦ ¹ö¸°´Ù. ³ª¸ÓÁö´Â numeraotr °ú °°Àº ºÎÈ£¸¦ °®´Â´Ù.

À̵é ÇÔ¼öµéÀº r.quot*denominator + r.rem Àº numerator °ú °°µµ·Ï ¸®Åϰª r À» Á¤ÇÑ´Ù. À̵éÀ» »ç¿ëÇϱâ À§Çؼ­, ´ç½ÅÀº ´ç½ÅÀÇ ÇÁ·Î±×·¥¿¡ Çì´õÆÄÀÏ 'stdlib.h'¸¦ Æ÷ÇÔ½ÃÄÑ¾ß ÇÑ´Ù.

µ¥ÀÌÅÍ Å¸ÀÔ : div__t

À̰ÍÀº div ÇÔ¼ö¿¡ ÀÇÇØ ¸®ÅÏµÈ °á°ú¸¦ ÀúÀåÇϱâ À§ÇØ »ç¿ëµÇ´Â ±¸Á¶Ã¼ÇüÀÌ´Ù. À̰ÍÀº ´ÙÀ½°ú °°Àº ¸â¹öµéÀ» °®´Â´Ù.

int quot ³ª´°¼ÀÀÇ ¸ò

int rem ³ª´°¼ÀÀÇ ³ª¸ÓÁö

ÇÔ¼ö : div_t div (int numerator, int denominator)

divÇÔ¼ö´Â numerator À» denominator ·Î ³ª´«°Í¿¡¼­ ¸ò°ú ³ª¸ÓÁö¸¦ ±¸Çϰí, ±× °á°ú¸¦ ±¸Á¶Ã¼ div_t ¿¡ ÀúÀåÇÏ¿© ¸®ÅÏÇÑ´Ù. ¸¸ÀÏ ±× °á°ú°¡ Ç¥ÇöµÉ ¼ö ¾ø´Ù¸é( ¿µÀ¸·Î ³ª´©´Â °Í ó·³), ±× °á°ú´Â Á¤ÀÇ µÇÁö ¾Ê¾Ò´Ù.

À¯¿ëÇÑ °ÍÀº ¾Æ´ÏÁö¸¸, ÇϳªÀÇ ¿¹¸¦ µé¸é...

div_t result;

result = div (20, -6);

À̰ÍÀÇ °á°ú·Î ³ª¿Â result.quot ´Â -3 À̰í result.rem Àº 2ÀÌ´Ù.

µ¥ÀÌÅÍ Å¸ÀÔ : ldiv__t

À̰ÍÀº ldiv ÇÔ¼ö¿¡ ÀÇÇØ ¸®ÅÏµÈ °á°ú¸¦ ÀúÀåÇϱâ À§ÇØ »ç¿ëµÇ´Â ±¸Á¶Ã¼ÀÌ´Ù. À̰ÍÀº ´ÙÀ½°ú °°Àº ¸â¹öµéÀ» °®´Â´Ù.

long int quot ³ª´°¼ÀÀÇ ¸ò

long int rem ³ª´°¼ÀÀÇ ³ª¸ÓÁö

( À̰ÍÀº ±¸Á¶Ã¼ ¿ä¼ÒµéÀÌ int ÇüÀÌ ¾Æ´Ï¶ó long int ¶ó´Â Á¡À» Á¦¿ÜÇϸé, div_t ¿Í µ¿ÀÏÇÏ´Ù. )

ÇÔ¼ö : ldiv_t ldiv (long int numerator, long int denominator)

ldiv ÇÔ¼ö´Â Àμö°¡ long int ÇüÀ̰í, ±× °á°ú°¡ ldiv ÇüÀÇ ±¸Á¶Ã¼¿¡ ¸®Åϵȴٴ Á¡À» Á¦¿ÜÇϰí´Â, div ÇÔ¼ö¿Í À¯»çÇÏ´Ù.

14.7 ¼ýÀÚÀÇ ÆÄ½Ì(±¸¹®Çؼ® : parsing)

ÀÌ ÀýÀº ¹®ÀÚ¿­·ÎºÎÅÍ Á¤¼ö¿Í ÇÃ·ÎÆÃ Æ÷ÀÎÆ® ¼ýÀÚ¸¦ "Àбâ" À§ÇÑ ÇÔ¼öµéÀ» ¼³¸íÇÑ´Ù. ±×°ÍÀº sscanf ¶Ç´Â ±× ÇÔ¼ö¿Í ¿¬°üµÈ ¾î¶²°Íº¸´Ù, ¾î¶² °æ¿ì¿¡´Â »ç¿ëÇϱ⠴õ Æí¸®ÇÒ °ÍÀÌ´Ù; 7.11Àý [Formatted Input] 85 ÆäÀÌÁö ÂüÁ¶. ´ç½ÅÀÌ Á÷Á¢ ¹®ÀÚ¿­¿¡¼­ ÅäÅ«À» ºÐ¸®Çس»´Â °ÍÀÌ ´õ ¾ÈÁ¤µÈ ÇÁ·Î ±×·¥À» ¸¸µå´Â °æ¿ìµµ ÀÖ°ÚÁö¸¸, ±×·¯¸é ±×¶§´Â ÇϳªÇϳª¾¿ ±× ÅäÅ«À» ¼ýÀÚ·Î º¯°æÇؾ߸¸ ÇÑ´Ù.

14.7.1 Á¤¼öÀÇ ÆÄ½Ì.

À̵é ÇÔ¼öµéÀº 'stdlib.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.

ÇÔ¼ö : long int strtol (const char *string, char **tailptr, int base)

strtol ("½ºÆ®¸µ¿¡¼­ long À¸·Î ") ÇÔ¼ö´Â ¹®ÀÚ¿­ÀÇ Ã³À½ºÎºÐÀ» long intÇüÀ¸·Î ¸®ÅÏµÈ ºÎȣȭµÈ Á¤¼ö ·Î ¹Ù²Û´Ù. ÀÌ ÇÔ¼ö´Â ´ÙÀ½°ú °°ÀÌ ¹®ÀÚ¿­À» ºÐÇØÇÏ·Á ½ÃµµÇÑ´Ù.

o °ø¹é¹®ÀÚ(whitespace characters)ÀÇ ¿­. °ø¹é¹®ÀÚ´Â isspace ÇÔ¼ö·Î ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù( 4.1Àý [Classification of Characters] 41 ÆäÀÌÁö ÂüÁ¶.). ÀÌµé °ø¹é¹®ÀÚ´Â ¹ö·ÁÁø´Ù.

o ÀÓÀÇÀÇ Ç÷¯½º ¶Ç´Â ¸¶À̳ʽº ºÎÈ£('+' ¶Ç´Â '-').

o ±â¼ö°¡ Á¤ÇØÁø, ¾Æ¹«·± °ø¹éÀÌ ¾ø´Â ¼ýÀÚµéÀÇ ¿­. ¸¸ÀÏ ±â¼ö°¡ 0À̸é, '0'( 8Áø¼ö·Î Á¤Çϱâ ) ¶Ç´Â '0x' ³ª '0X'( 16Áø¼ö ) ·Î ½ÃÀÛÇÏ´Â ¼ýÀÚ¿­ÀÌ ¾Æ´ÏÇÑ, ½ÊÁø¼ö·Î °¡Á¤ÇÑ´Ù. Áï, °°Àº ±¸¹®À» C¿¡¼­ Á¤ ¼ö »ó¼ö¸¦ À§ÇØ »ç¿ëÇÑ´Ù. ±×·¸Áö ¾Ê´Ù¸é ±â¼ö´Â ¹Ýµå½Ã 2¿Í 35 »çÀÌÀÌ¿©¾ß¸¸ ÇÑ´Ù. ¸¸ÀÏ ±â¼ö°¡ 16 À̸é, ±× ¼ýÀÚ´Â '0x' ³ª '0X' ·Î ½ÃÀÛµÉ °ÍÀÌ´Ù.

o ¹®ÀÚ¿­¿¡¼­ ³²Àº ³ª¸ÓÁö ¹®ÀÚµé. ¸¸ÀÏ tailptrÀÌ ³Î Æ÷ÀÎÅͰ¡ ¾Æ´Ï¶ó¸é, strcolÀº *tailptr¿¡ tailÀ» °¡ ¸®Å°´Â Æ÷ÀÎÅ͸¦ ÀúÀåÇÑ´Ù.

¸¸ÀÏ ±× ¹®ÀÚ¿­ÀÌ ¿ÀÁ÷ °ø¹éÀ¸·Î¸¸ µÇ¾î Àְųª, Á¤ÇØÁø ±â¼öÀÇ Á¤¼ö°¡ °¡Á®¾ßÇϴ óÀ½ÀÇ ºÎ¹®ÀÚ¿­ À» Æ÷ÇÔÇÏÁö ¾Ê´Â´Ù¸é, ¾Æ¹«·± º¯È¯ÀÌ ¼öÇàµÇÁö ¾Ê´Â´Ù. ÀÌ °æ¿ì, strcolÀº 0À» ¸®ÅÏÇϰí, *tailptr¿¡ ÀúÀåµÈ °ªÀº ½ºÆ®¸µÀÇ °ªÀÌ´Ù.

Ç¥ÁØ "C" Áö¿ªÀÌ ¾Æ´Ñ ´Ù¸¥ Áö¿ª¿¡¼­, ÀÌ ÇÔ¼ö´Â ±× Áö¿ªÀÇ ±¸¹®¿¡ ÀÇÁ¸µÇ´Â ºÎ°¡ÀûÀÎ µ¿ÀÛÀ» ÀÎ½Ä ÇÒ °ÍÀÌ´Ù. ¸¸ÀÏ ±× ¹®ÀÚ¿­ÀÌ Á¤¼ö¿¡ ¸Â´Â ±¸¹®À» °®°í ÀÖÁö¸¸ ¿À¹öÇÃ·Î¿ì ¶§¹®¿¡ Ç¥ÇöÇÒ ¼ö ¾ø´Ù ¸é, strtolÀº ±× °ªÀÇ ºÎÈ£¿¡ ¾Ë¸Â´Â LONG_MAX ¶Ç´Â LONG_MINÀ» ¸®ÅÏÇÑ´Ù(A.5.2Àý [Range of Type], 388 ÆäÀÌÁö ÂüÁ¶.) ¶ÇÇÑ ¿À¹öÇ÷ο찡 ³µÀ½À» ¾Ë¸®±â À§Çؼ­ errno¸¦ ERANGE·Î ¼³Á¤ÇÑ´Ù. À̰Ϳ¡ ´ëÇÑ ¿¹´Â ÀÌ ÀýÀÇ ¸¶Áö¸·¿¡ ÀÖ´Ù.

ÇÔ¼ö : unsigned long int strtoul (const char *string, char **tailptr, int base)

strtoul (" ¹®ÀÚ¿­À» unsigned long À¸·Î ") ÇÔ¼ö´Â unsigned long int ÇüÀ¸·Î ±× °ªÀ» ¸®ÅÏÇÑ´Ù´Â °Í À» Á¦¿ÜÇϰí´Â strtolÇÔ¼ö¿Í °°´Ù. ¿À¹öÇ÷ο찡 ¹ß»ýÇÒ °æ¿ì¿¡ ¸®ÅϵǴ °ªÀº ULONG_MAX ÀÌ´Ù (A.5.2 Àý [Range of Type] 388 ÆäÀÌÁö ÂüÁ¶.)

ÇÔ¼ö : long int atol (const char *string)

ÀÌ ÇÔ¼ö´Â ¿À¹öÇÃ·Î¿ì ¿¡·¯¸¦ °ËÃâÇÒ Çʿ䰡 ¾ø´Ù´Â Á¡À» Á¦¿ÜÇϰí, base Àμö·Î 10À» »ç¿ëÇÑ strtol ÇÔ¼ö¿Í À¯»çÇÏ´Ù. atol ÇÔ¼ö´Â ÇöÁ¸ÇÏ´Â ÄÚµå¿ÍÀÇ È£È¯¼ºÀ» À§Çؼ­ Á¦°øµÇ¾ú´Ù; strtolÀÌ ´õ ¾ÈÁ¤Àû ÀÌ´Ù.

ÇÔ¼ö : int atoi (const char *string)

ÀÌ ÇÔ¼ö´Â long int °¡ ¾Æ´Ñ int ÇüÀ¸·Î °ªÀ» ¸®ÅÏÇÑ´Ù´Â Á¡À» Á¦¿ÜÇϰí, atol ÇÔ¼ö¿Í °°´Ù. atoi ÇÔ ¼ö´Â ¶ÇÇÑ ¿À·¡µÈ ÇÔ¼ö·Î °£ÁֵǹǷÎ; strtol À» ´ë½Å »ç¿ëÇ϶ó.

À̰ÍÀº Á¤¼ö·Î À̾îÁø ¹®ÀÚ¿­À» ºÐ¼®ÇÏ°í ±×µéÀÇ ÇÕÀ» ±¸ÇÏ´Â ÇÔ¼öÀÌ´Ù.

int

sum_ints_from_string (char *string)

{

int sum = 0;

while (1) {

char *tail;

int next;

/* ¾ÕÀÌ °ø¹éÀ¸·Î µÇ¾î ÀÖ´Â °ÍÀ» °Ç³Ê¶Ú´Ù. */

while (isspace (*string)) string++;

if (*string == 0)

break;

/* °ø¹éÀÌ Á¦°ÅµÇ¾úÀ¸¹Ç·Î ¼ýÀÚ·Î º¯°æÇÏÀÚ */

errno = 0;

/* ±×°ÍÀ» ºÐ¼®ÇÑ´Ù. */

next = strtol (string, &tail, 0);

/* ¸¸ÀÏ ¿À¹öÇ÷ο찡 ¹ß»ýÇÏÁö ¾Ê¾Ò´Ù¸é, ±×°ÍÀ» ´õÇØ¶ó */

if (errno)

printf ("Overflow\n");

else

sum += next;

/* ´ÙÀ½ ºÐ¼®À» À§Çؼ­ Áö±Ý ÇöÀç±îÁö ºÐ¼®ÇÑ À§Ä¡¸¦ ÀúÀåÇØ³õ´Â´Ù. */

string = tail;

}

return sum;

}

14.7.2 ÇÃ·ÎÆ®ÀÇ ÆÄ½Ì.

À̰÷¿¡ ÀÖ´Â ÇÔ¼öµéÀº 'stdlib.h'¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.

ÇÔ¼ö : double strtol (const char *string, char **tailptr)

strtol ("¹®ÀÚ¿­À» double ·Î") ÇÔ¼ö´Â ¹®ÀÚ¿­ÀÇ Ã³À½ºÎºÐÀ» doubleÇüÀ» °¡Áø ÇÃ·ÎÆÃ-Æ÷ÀÎÆ® ¼ö·Î º¯ ȯÇÑ´Ù. ÀÌ ÇÔ¼ö´Â ´ÙÀ½ÀÇ °æ¿ì¿¡ ¹®ÀÚ¿­À» ºÐÇØÇÏ·Á ½ÃµµÇÑ´Ù.

o ¿¬¼ÓÀûÀÎ °ø¹é¹®ÀÚµé. °ø¹é¹®ÀÚ(whitespace characters)µéÀº isspace ÇÔ¼ö( 4.1Àý [Classification of Characters] 41 ÆäÀÌÁö ÂüÁ¶. ) ÀÇ »ç¿ëÀ¸·Î ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù. °ø¹éÀº ¹ö·ÁÁø´Ù.

o ÀÓÀÇÀÇ Ç÷¯½º³ª ¸¶À̳ʽº ºÎÈ£ ( '+' ¶Ç´Â '-')

o ¼Ò¼öÁ¡(º¸Åë '.')À» Æ÷ÇÔÇϰí ÀÖ´Â °ø¹é¾ø´Â ¼ýÀÚ¿­, ±×·¯³ª ¼Ò¼öÁ¡ÀÇ À§Ä¡¿¡ ÀÇÁ¸ÇÑ´Ù. (19.6Àý [Numeric Formatting] 262ÆäÀÌÁö ÂüÁ¶.)

o ¹®ÀÚ ÀÓÀÇÀÇ ºÎÈ£ 'e' ¶Ç´Â 'E', ±×¸®°í ¼ýÀÚµéÀÇ ¿­·Î ±¸¼ºµÈ Áö¼öºÎºÐ.

o ¹®ÀÚ¿­ÀÇ ³ª¸ÓÁö ¹®ÀÚ. ¸¸¾à tailptrÀÌ ³Î Æ÷ÀÎÅͰ¡ ¾Æ´Ï¶ó¸é, ½ºÆ®¸µÀÇ tail Æ÷ÀÎÅ͸¦ *tailptr¿¡ Àú ÀåµÈ´Ù.

¸¸ÀÏ ±× ¹®ÀÚ¿­ÀÌ ºñ¾îÀְųª, ¿ÀÁ÷ °ø¹é¸¸ Àְųª, ¶Ç´Â ÇÃ·ÎÆÃ-Æ÷ÀÎÆ®·Î ÆÇ´ÜÇÒ¸¸ÇÑ ¹®ÀÚ¿­À» Æ÷ ÇÔÇÏÁö ¾Ê´Ù¸é, ¾Æ¹«·± º¯È¯ÀÌ ÀϾÁö ¾Ê´Â´Ù. ÀÌ °æ¿ì, strtod´Â 0À» ¸®ÅÏÇϰí, *tailptr¿¡ ¸®ÅÏµÈ °ªÀº ¹®ÀÚ¿­ÀÇ °ªÀÌ´Ù.

Ç¥ÁØ "C" ¿Í´Â ´Ù¸¥ Áö¿ªÀ̶ó¸é, ÀÌ ÇÔ¼ö´Â ±× Áö¿ªÀÇ ±¸¹®¿¡ ÀÇÁ¸ÇÏ´Â ºÎ°¡Àû ÀÛµ¿µéÀ» ÀνÄÇÒ °Í ÀÌ´Ù.

¸¸ÀÏ ±× ¹®ÀÚ¿­ÀÌ ÇÃ·ÎÆÃ-Æ÷ÀÎÆ® ¼ýÀÚ¸¦ ÀÌ·ç±â À§ÇÑ À¯¿ëÇÑ ±¸¹®À» °®°í ÀÖÁö¸¸, ±× °ªÀ» ¿À¹öÇ÷Π¿ì ¶§¹®¿¡ Ç¥ÇöÇÒ ¼ö ¾ø´Ù¸é, strtod´Â ±× °ªÀÇ ºÎÈ£¿¡ ÀÇÁ¸Çؼ­, À½À̳ª ¾çÀÇ HUGE_VALÀ» ¸®ÅÏ ÇÑ´Ù. ( 13Àå. [Mathematics] 203 ÆäÀÌÁö ÂüÁ¶.). À¯»çÇϰÔ, ¸¸ÀÏ ±× °ªÀÌ ¾ð´õÇ÷οì(underflow) ¶§ ¹®¿¡ Ç¥ÇöÇÒ ¼ö ¾ø´Ù¸é, strtod´Â 0À» ¸®ÅÏÇÑ´Ù. ±×°ÍÀº ¶ÇÇÑ ¿À¹öÇ÷ο쳪 ¾ð´õÇ÷οìÀÇ °æ¿ì¿¡ errno¸¦ ERANGE ·Î ¼³Á¤ÇÑ´Ù.

ÇÔ¼ö : double atof (const char *string)

ÀÌ ÇÔ¼ö´Â ¿À¹öÇ÷οì¿Í ¾ð´õÇÃ·Î¿ì ¿¡·¯¸¦ °ËÃâÇÒ Çʿ䰡 ¾ø´Ù´Â Á¡À» Á¦¿ÜÇϰí´Â, strtod ÇÔ¼ö¿Í À¯»çÇÏ´Ù. atof ÇÔ¼ö´Â ÇöÁ¸ÇÏ´Â ÄÚµå¿ÍÀÇ È£È¯¼ºÀ» À§Çؼ­ Á¦°øµÈ´Ù; strtod¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ´õ ¾ÈÀü¼ºÀÌ ÀÖ´Ù.