SIÇÁ·ÎÁ§Æ® ½Ç¹«°æÇè¹ÙÅÁ Àü¹®ÀÚ¹Ù°³¹ßÀÚ°øµ¿Ã¼    
    WASÀü¹®±â¼ú/½Ã½ºÅÛÀå¾ÖÁø´Ü/¼º´ÉÀÌ·Ð/ÄÁ¼³ÆÃ
¾ÆÀ̵ð: 
ºñ¹Ð¹øÈ£: 
[ȸ¿ø°¡ÀÔ]
¡ß Java API Tips
--------------------
- Programming Tips
- JDC Tech Tips

- Servlet/JSP
- J2EE/EJB
- XML/SOAP/UDDI/WSDL
- Jakarta POI
- JDBC
- Mobile Java
- Applet,Swing,SWT
- CORBA
- RMI
- JavaMail
- HTML/HTC/css/js
- Web ÀϹÝ

- ¼­ºí·¿¿£Áø @
(JServ,Tomcat,JRun,..)
Áú¹®Àº [¹¯°í´äÇϱâ]¶õ¿¡¸¸ ¿Ã·ÁÁÖ¼¼¿ä





ÃÖ±Ù¿¡ Å͵æÇÑ »õ·Î¿î °ÍÀÌ ÀÖ³ª¿ä? ¸Ó¸® ¼Ó¿¡ ³Ö¾î µÎ¸é ±Ý¹æ Àؾî¹ö¸®ÁÒ? ÀÛÀº °ÍÀÌ¶óµµ ±¦ÂúÀ¸´Ï À̰÷¿¡ ¿Ã·Á³õ°í ³²µé°ú °øÀ¯ÇϽÃÁö¿ä.. ¿Ã¸±¸¸ÇÑ ¸Þ´º°¡ ¾ø´Ù±¸¿ä? ¸¸µé¾î µå¸±²²¿ä.


[ÃÖ±Ù ¿Ã¶ó¿Â ±Ûº¸±â] °Ë»ö¾î:
 JavaResource | API Tips | Open Source | APM | ApplicationServer | Unix/DB/JVM/Etc | Q&A/Help
¡ß Java Resources
--------------------
- °øÁö»çÇ×
- ÃÖ±Ù IT ¼Ò½Ä
- ¼¼¹Ì³ª¼Ò½Ä
- À̺¥Æ® & ÇÁ·Î¸ð¼Ç

- Ãßõ¹®¼­(2006)
- Ãßõ¹®¼­(2003-2005)
- Ãßõ¹®¼­(±¸)

- °ü·Ã »çÀÌÆ®

- ¹¯°í´äÇϱâ @
- ¹¯°í´äÇϱâ-BACKUP @
- ±â¼ú Åä·ÐÀå @
- ÀÏ¹Ý Åä·ÐÀå @
- »çȸ Åä·ÐÀå @


- ÇÁ·ÎÁ§Æ®½Ç¹«ÄÁ¼³ÆÃ@

- ±³À°/°­ÀÇ/°­ÁÂ
- ÇÁ·ÎÁ§Æ®/¼Ö·ç¼ÇÁ¦¾È
- ä¿ë°ø°í/°³¹ßÀÚ±¸ÀÎ
- ±¸Á÷¶õ

- Àǰ߳ª´®ÅÍ/Àâ´ã

- ÀÚ¹Ù¼­ºñ½º³ÝÀº...
¡ß Java API Tips
--------------------
- Programming Tips
- JDC Tech Tips

- Servlet/JSP
- J2EE/EJB
- XML/SOAP/UDDI/WSDL
- Jakarta POI
- JDBC
- Mobile Java
- Applet,Swing,SWT
- CORBA
- RMI
- JavaMail
- HTML/HTC/css/js
- Web ÀϹÝ

- ¼­ºí·¿¿£Áø @
(JServ,Tomcat,JRun,..)
¡ß Open Source
----------------------
- Eclipse/Plugin
- Apache Struts
- JDF Framework
  - Download / API

- Open Source Q&A
* ¿ÀǼҽº °Ô½ÃÆÇ
  ½Åû¹Þ¾Æ¿ä.
¡ß APM
----------------------
- Performance Forum
- Jennifer
  - Consulting Doc.
  - »ç¿ëÈıâ/±â´ÉÃß°¡¿äû
  - Jennifer FAQ
  - Jennifer Q&A
  - Jennifer Download
- CA/Wily
- Mercury Topaz/J2EE Diag.
- Symantec i3
- Borland Optimizeit
- Compuware Vantage
¡ßApplicationServer
-------------------- 
- ¾îÇø®ÄÉÀ̼Ǽ­¹ö

- Apache Geronimo
- ATG Dynamo
- BEA WebLogic
- BolandEnterpriseServer
- Evermind Orion Server
- Fujitsu Interstage
- GemStone's GemStone/J
- HP Netaction
- IBM WebSphere
- IONA iPortal
- InfronTech WebTide
- Macromedia JRun
- Marc Fleury's JBoss
- Oracle 9iAS/OAS/OSDK
- Persistence PowerTier
- SilverStream eXtend
- Sun/Netscape iPlanet
- Sybase EAServer
- TmaxSoft JEUS

- ¼­ºí·¿¿£Áø
(JServ,Tomcat,Resin,..)

- eclipse/Plugin
- Other IDE Tools
¡ßUnix/DB/JVM/Etc
--------------
- Unix/Network
- Hacking/Cracking

- DataBase
- JDBC @

- JVM/JDK Issue
- ±âŸ ÀÚ·á½Ç
¡ß Q&A/Help
--------------------
- ¹¯°í´äÇϱâ
- ¹¯°í´äÇϱâ-BACKUP
- Åä·ÐÀå
- ÇÁ·ÎÁ§Æ®½Ç¹«ÄÁ¼³ÆÃ
- Framework Q&A @
- Jennifer Q&A @

- °Ô½ÃÆÇ »ç¿ë¹ý
- ÀÚ¹Ù¼­ºñ½º³ÝÀº... @
General Java Programming Tips
  [±Û¸ñ·Ï /½Ã°£¼ø] [´ä±Û¾²±â] [ÇÁ¸°Æ®]   
Á¦¸ñ : [ÀÚ¹ÙÀÇ ¼ýÀÚÇ¥Çö] ¾îµð±îÁö °¡´ÉÇÒ±î !!!
±Û¾´ÀÌ: ÀÌ¿ø¿µ(javaservice) 1999/03/03 13:14:50 Á¶È¸¼ö:22413 ÁÙ¼ö:101

1. intÇüÀ¸·Î ÇÏ¸é ¾ó¸¶±îÁö ³ªÅ¸³¾ ¼ö Àִ°¡?

   intÇüÀ¸·Î ÇßÀ» °æ¿ì TestÇØ º» °á°ú·Î´Â 21¾ï±îÁö ¹Û¿¡ °è»êÀÌ ¾ÈµÇ³×¿ä.
   Áï, 2,147,483,647 À» ¾Æ·¡Ã³·³ ÇØ ºÃÁÒ.

    int result = Integer.parseInt("2147483646") + 1;
   Àº Á¦´ë·Î °è»êÀÌ µÇ´Âµ¥,
    int result = Integer.parseInt("2147483647") + 1;
   ÀÇ °ªÀº  -2147483648ÀÌ ³ª¿À³×¿ä...

   2,147,483,647 Àº 2^(32-1) -1 ÀÔ´Ï´Ù.

2. ±×·³ longÇüÀ¸·Î ÇÏ¸é ¾ó¸¶±îÁö °¡´ÉÇÒ±î?

   longÇüÀº 9,223,372,036,854,775,807 ±îÁö µË´Ï´Ù.
   'Á¶' ´ÙÀ½ÀÌ '°æ'À̴ϱî 9¹é2½Ê2°æ 3õÁ¶ ±îÁö±¸³¶...
    long result = Long.parseLong("9223372036854775807 ) + 1;

   9223372036854775807 + 1 Àº -9223372036854775808 ·Î ³ª¿À³×¿ä.
  
   9223372036854775807 Àº 2^(64-1)-1 ÀÔ´Ï´Ù.
   

[°á·Ð] µû¶ó¼­ 21¾ï ÀÌ»óÀ» Ç¥ÇöÇÏ·Á¸é longÇüÀÌ ÇÊ¿äÇÔÀ» ¾Ë¼ö ÀÖ½À´Ï´Ù.
   ¸¸¾à ¼Ò¼öÁ¡ ÀÌÇÏ ÀÚ¸´¼öµµ Ç¥ÇöÇØ¾ß ÇÑ´Ù¸é doubleÇüÀÌ ÇÊ¿äÇÕ´Ï´Ù.
   doubleÇüÀ¸·Î ÇßÀ» °æ¿ìµµ ¹Ýµå½Ã ¸¸´ÉÀÌ ¾Æ´Õ´Ï´Ù.

3. ±×·³ ÀÚ¹ÙÀÇ ÃÖ´ë ¼Ò¼öÁ¡ 󸮰¡ °¡´ÉÇÑ doubleÇüÀº ¾îµð±îÁöÀΰ¡¿ä?

 1)¼Ò¼ö ÀÌÇÏÀÇ ÀÚ¸®¼ö¸¦ À¯È¿¼ýÀÚ 2ÀÚ¸®±îÁö ÇÊ¿äÇÏ´Ù¸é ±× ¼öÄ¡´Â
   70Á¶(70,368,744,177,663.99) ±îÁö ÀÔ´Ï´Ù. 
   ¾Æ·¡¿Í °°Àº ÇÁ·Î±×·¥¿¡¼­

   import java.text.DecimalFormat;
   DecimalFormat df = new DecimalFormat("#########################.00");
   double d = new Double(src.getText()).doubleValue();
   d += 0.01;
   textfield.setText(df.format(d) );

   70368744177663.99 + 0.01 = 70368744177664 ·Î Á¦´ë·Î °è»êµÇ³ª
   70368744177664.00 + 0.01 = 70368744177664.02 ·Î 0.01ÀÇ ¿ÀÂ÷°¡ ¹ß»ýÇÕ´Ï´Ù.
 
 2)¸¸¾à doubleÇüÀ¸·Î »ç¿ëÇ쵂 ¼Ò¼ýÁ¡ ÀÌÇÏ´Â ¹«½ÃÇÑ´Ù°í ÇÑ´Ù¸é
   9õ 7Á¶(9,007,100,000,000,000) ±îÁö¸¸ + 1.0 À» ÇßÀ» ¶§ Á¤È®ÇÑ ¼öÄ¡°¡ ³ª¿É´Ï´Ù.
 
 3)¸¸¾à ¼Ò¼öÀÌÇÏ ¼¼ÀÚ¸®±îÁö ÇÊ¿äÇÏ´Ù¸é ¾îµð±îÁú±î¿ä?

   8Á¶ 7õ9¹é60¾ï(8,796,093,022,207)±îÁö³×¿ä.
   8796093022207 + 0.001 = 8796093022207.001 ·Î Á¤È®Çϳª
   ±× ´ÙÀ½ºÎÅÏ 0.001ÀÇ Â÷À̰¡ ³³´Ï´Ù.

   (NOTE: ½É°¢ÇÏ°Ô Â÷À̰¡ ¹Ù·Î ¹ß»ýÇÏÁö´Â ¾ÊÁö¸¸ À§ ¼öÄ¡ ºÎÅÍ µ¡¼ÀÀ̳ª »¬¼ÀÀÌ ¾à°£ÀÇ 
          ¿ÀÂ÷¸¦ º¸À̱⠽ÃÀÛÇÕ´Ï´Ù.)

  [°á·Ð] ¿¡±Ã ÀÚ¹Ù´Â double¿Ü¿¡´Â ¾ø´Âµ¥, ¾î¶»Çϳ¶? ¼Ò¼öÀÌÇϸ¦ ¹«½ÃÇϸé 9õ 7Á¶ ±îÁö¸¸
        °è»êÀÌ Á¤È®Çϰí, ¼Ò¼ö µÎÀÚ¸® ±îÁø 70Á¶°¡ ³Ñ¾î¸é ¾ÈµÇ±¸, ¼Ò¼ö ¼¼Â°ÀÚ¸®°¡Áø
        8Á¶7õ¾ïÀÌ ³Ñ¾î¸é ¾ÈµÈ´Ù´õ¶ó...
        ¾î¼³ª... 
        ±×·¯³ª ¾îµð±îÁö¶ó°í´Â ²À Áý¾î ¾ê±âÇÏÁø ¸øÇÏÁö¸¸, ±¹¹æºÎ °°ÀÌ ¸î ¹é¾ï ´ÜÀ§´Â
        longÇü°ú doubleÇü¸¸À¸·Î °è»êÀ¸·Î ÇÏ¿©µµ ¹®Á¦´Â ¹ß»ýÇÏÁö ¾Ê°Ú³×¿ä..
 
        ±×·¯³ª ÀºÇàÀ̳ª, ±ÝÀ¶±â°ü, ±¹°¡ÀçÁ¤À» ´Ù·ç´Â ½Ã½ºÅÛÀ» ²Ù¹Ð ¶§,
        ¸¸¾à ±× ½Ã½ºÅÛÀÌ ÀÚ¹Ù·Î µÇ¾î ÀÖ´Ù¸é,
        ¼öÄ¡°¡ Á¶´ÜÀ§¸¦ ¸¦ ³Ñ¾î °¥ °æ¿ì long°ú doubleÇüÀ» »ç¿ëÇÏ¸é °è»êÀÌ
        Ʋ·ÁÁø´Ù´Â °É ²À ±â¾ïÇϼ¼¿ä.



4. ±Ùµ¥, java.math.BigDecimal Àº ¹¹ÇÏ´Â °Å¿¹¿ä?
   java.math.BigIntegerµµ ÀÖ´øµ¥?

   import java.math.BigDecimal;
   BigDecimal op1 = new BigDecimal("100000000000000000000000000000000000.01");
   BigDecimal op2 = new BigDecimal("10002341234124000000000000000000.2134");
   BigDecimal sum = op1.add(op2);
   textArea.setText(sum.toString());
   
   µî°ú °°ÀÌ »ç¿ëÇϴµ¥, ¾Æ¹«¸® Å« ¼ö ÀÏÁö¶óµµ ¿Ïº®ÇÏ°Ô °è»êÇØ ³À´Ï´Ù.
   java.math.BigInteger ´Â Á¤¼öÇüÀ» °è»êÇÑ´Ù´Â °ÍÀ» Á¦¿ÜÇÏ°í ¶È °°½À´Ï´Ù.
   
   NOTE: ±×·¯³ª, °æ¿ì¿¡ µû¶ó, divide¿¬»êÀÇ ¹«ÇѼҼöÀÇ °æ¿ì´Â ¿©ÀüÈ÷ ÀÚ¸´¼ö °í¹ÎÀ» Çϼžß
       Çϰí, ¿¬»êÀ» À§ÇÑ ¼º´ÉÀûÀÎ À̽´µµ ÇÔ²² °í·ÁµÇ¾î¾ß °ÚÁö¿ä. 

[ÁøÂ¥ °á·Ð]
   ³¯·Î ÅëÈ­È­Æó°¡Ä¡°¡ ¶³¾î Áö´Â ¿äÁò Á¶´ÜÀ§´Â ½É½ÉÂú°Ô ½Å¹®¿¡ µîÀåÇÏ´Â ¼öÄ¡ÀÔ´Ï´Ù.
   ÀÌÁ¨ õ¹®ÇÐÀûÀÎ ¼ýÀÚ°¡ ¾Æ´Ï¶ó ÀÏ»óÀûÀÎ ¼ýÀÚ·Î µÇ´Â ¿äÁò µ·°è»êÀ» ÇÏ½Ç ¶§,
   ¾Æ¹« »ý°¢¾øÀÌ »çÄ¢¿¬»êÀ» ÇÒ °ÍÀÌ ¾Æ´Ï¶ó º¸´Ù À¯È¿ÀÚ¸®¼ýÀÚ¸¦ °í·ÁÇÏ¿© ¿¬»êÀ»
   »ý°¢ÇÏ´Â ²Ä²ÄÇÑ ÇÁ·Î±×·¡¸Ó°¡ µË½Ã´Ù.... ;

   ¸¶Áö¸·À¸·Î °ÇÀǸ¦ ÁֽŠÀÌ¿ø°æ´Ô²² °¨»çµå¸®¸ç ¹Ý¿µÇϵµ·Ï ÇØ¾ß °Ú³×¿ä.

[PS] ÀÚ¹ÙÀÇ Default Decimal ÇüÀº floatÇüÀÌ ¾Æ´Ï¶ó doubleÇüÀÔ´Ï´Ù.
   Áï float f = (float) 5.0; µî°ú °°ÀÌ cast¿¬»êÀÚ¸¦ »ç¿ëÇÏ´Â ¹Ý¸é¿¡
     double d = 5.0;  ÀÌ·¸°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â °ÅÁÒ.
   ±¸Å¿© ÀÚ¹Ù¿¡¼­ floatÇüÀ» ¾µ ÀÏÀº ¾ø´Ù°í º¸¿©Áý´Ï´Ù. À¯È¿¼ýÀÚ ÀÚ¸®¼ö¸¸ ³·¾ÆÁú »ÓÀÌÁÒ.

ÀÚ¹Ù¼­ºñ½º³Ý ÀÌ¿ø¿µ
-------------------------------------------------------  
  º» ¹®¼­´Â ÀÚÀ¯·Ó°Ô ¹èÆ÷/º¹»ç ÇÒ ¼ö ÀÖÀ¸³ª ¹Ýµå½Ã
  ÀÌ ¹®¼­ÀÇ ÀúÀÚ¿¡ ´ëÇÑ ¾ð±ÞÀ» »èÁ¦ÇÏ½Ã¸é ¾ÈµË´Ï´Ù
Á¦¸ñ : Re: [ÀÚ¹ÙÀÇ ¼ýÀÚÇ¥Çö] ¾îµð±îÁö °¡´ÉÇÒ±î !!!
±Û¾´ÀÌ: ÀÌ¿ø¿µ(javaservice) 2001/08/20 14:36:59 Á¶È¸¼ö:3613 ÁÙ¼ö:87
> Please respond to ±èûÁø <doolyjin@kr.qrio.com> 
> To:	WonYoung Lee/Korea/IBM@IBMKR
> cc:	 
> Subject: ¾È³çÇϼ¼¿ä. ¹®ÀÇ Á» µå¸³´Ï´Ù.
> 
> 
> ¾È³çÇϼ¼¿ä. Á¶ÈïÀºÇà¿¡¼­ Á¾±Ý¾÷¹«¸¦ °³¹ßÇϰí ÀÖ´Â ±³º¸Á¤º¸Åë½ÅÀÇ ±èûÁøÀÔ´Ï´Ù. 
> ÀÏÀü¿¡ Á¶ÈïÀºÇà¿¡ Çѹø ¿À½ÅÀûÀÌ ÀÖÀ¸½Ç ¶§ ºÆ¾ú½À´Ï´Ù.
> ´Ù¸§ÀÌ ¾Æ´Ï¶ó, ÀÚ¹Ù¿¡ °ü·ÃÇØ¼­ ÇѰ¡Áö ¹®ÀÇ Á» µå¸®·Á°í ÇÕ´Ï´Ù.
> ¹°·Ð IBMÀÌ ÀÚ¹Ù¸¦ ´ã´çÇÏÁö´Â ¾ÊÁö¸¸, ¿ö³« ÇØ°áÀÌ ¾ÈµÇ¾î¼­ ¾î·Á¿î ºÎŹÀ» µå¸³´Ï´Ù. 
> Á˼ÛÇÕ´Ï´Ù.
> 
> ============================================================
> import java.text.*;
> 
> public class TOneA
> {
>     public TOneA()
>     {
>         double dvalue;
> 
>         dvalue = 730000000 * (3 * 4.77) / 36500;
>         System.out.println(dvalue);
> 
>         dvalue = 730000000 * 4.77 * 3 / 36500;
>         System.out.println(dvalue);
> 
>         dvalue = 730000000 * (3 * 4.77) / 36500;
>         System.out.println(dvalue);
> 
>         dvalue = 4.77 * 730000000 * 3 / 36500;
>         System.out.println(dvalue);
> 
>         dvalue = 4.77 * 3 * 730000000 / 36500;
>         System.out.println(dvalue);
> 
>         dvalue = 3 * 4.77 * 730000000 / 36500;
>         System.out.println(dvalue);
>     }
> 
> 	public static void main(String[] args)
>     {
> 		TOneA aTOneA = new TOneA();
> 	}
> }
> 
> /* °á°ú
> 286200.0
> 286199.99999999994
> 286200.0
> 286199.99999999994
> 286200.0
> 286200.0
> */
> =========================================================
> 
> À§¿¡ ÇÁ·Î±×·¥À» ½ÇÇàÇÏ¸é °á°ú¿Í °°ÀÌ ÀÌ»óÇÑ °á°ú°¡ ³ª¿É´Ï´Ù.
> ÀÌ·Î ÀÎÇØ¼­ Áö±Ý °è»êÇÑ ±Ý¾×µéÀÌ ½Åºù¼ºÀ» ¾òÁö ¸øÇϰí ÀÖ½À´Ï´Ù.
> Á˼ÛÇÑ ºÎŹÀÎÁö´Â ¾ËÁö¸¸ ¿øÀÎÀ» Á» ã¾ÆÁÖ½Ã¸é °¨»çÇϰڽÀ´Ï´Ù.
> ±×·³ ¼ö°íÇϽʽÿÀ. °í¸¿½À´Ï´Ù.
>

double Çü ¿¬»êÀÇ precision ¹®Á¦ÀÔ´Ï´Ù.

¾ð±ÞÇϽй®Á¦´Â ¿¬»êÀÇ precision ¹®Á¦·Î ÀÎÇØ ¹ß»ýµÇ´Â °ÍÀ¸·Î½á, ¿¬»êÀÇ ¼ø¼­¿¡ µû¶ó
Áß°£°è»ê°úÁ¤ÀÇ ¼öÄ¡°¡ precision À» ³Ñ¾î¼­±â ¶§¹®¿¡ ¹ß»ýÇÏ´Â Â÷ÀÌÀÔ´Ï´Ù.
´ÔÀÇ °æ¿ì ¿ÀÂ÷°¡ 0.00000000006 À̱º¿ä... À̰ÍÀ» Çã¿ëÇϰڴÀ³Ä ȤÀº Çã¿ëÄ¡ ¾Ê°Ú´À³Ä´Â ÀüÀûÀ¸·Î
°³¹ßÀÚÀÇ ºñÁî´Ï½º ·ÎÁ÷¿¡ ´Þ·Á ÀÖ½À´Ï´Ù. 
¸¸¾à, À̰ÍÀ» Çã¿ëÇϰڴٸé,´ÜÁö  NumberFomat À» ÀÌ¿ëÇÏ¿© ¹Ý¿Ã¸² Ç¥Çö¸¸ ÇØ ÁÖ¸é µÉ °ÍÀÔ´Ï´Ù.
¸¸¾à, ±ÝÀ¶±Ç ±â¹ÝÀÇ ·ÎÁ÷À» Â¥°í ÀÖÀ¸¸é¼­, À§ÀÇ ¿ÀÂ÷¸¦ Çã¿ëÄ¡ ¾Ê°Ú´Ù¸é, À§ ±Û¿¡¼­ ¾ð±ÞÇßµí
java.math.BigDecimal Ŭ·¡½º¸¦ ÀÌ¿ëÇÏ½Ã¸é µÉ °ÍÀÔ´Ï´Ù.

------------------------
2004.08.06 Ãß°¡
1) ³»ºÎÀû ¿¬»êÀº Çã¿ëµÈ(!) À¯È¿¼ýÀÚ ¹üÀ§ ³»¿¡¼­ °¡±ÞÀû Á¤È®ÇÏ°Ô Çϰí,
2) È­¸éÀ¸·ÎÀÇ Ç¥ÇöÀº ÀûÀýÇÑ(!) ¹üÀ§ ³»¿¡¼­ Ç¥ÇöÇÏ¸é µÇ´Â °ÍÀÌÁö¿ä.

1)¹øÀÇ Àǹ̴Â, ¿¹¸¦ µé¾î ¾î¶² °æ¿ì·Îµµ 1/3 = 0.33333333....À̹ǷÎ, 
float, double, java.math.BigDecimal µîÀÌ Çã¿ëÇÏ´Â ¿ÀÂ÷ ¹üÀ§°¡, ÇØ´ç ºñÁî´Ï½ºÀûÀÎ
¸é¿¡¼­ ÃæºÐÇϳĿ¡ µû¶ó °áÁ¤ÇÏ¸é µÈ´Ù´Â °ÍÀÌÁö¿ä.

2)¹øÀÇ Àǹ̴ »çÄ¢¿¬»êÀº ¾Õ¼­¿Í °°ÀÌ ÇÏ¸é µÇ´Âµ¥, ¾î´À ¼ø°£ÀÌ µÇ¸é È­¸éÀ̳ª ÆÄÀϰú
°°ÀÌ ¹®ÀÚ¿­ ÇüÅ·ΠǥÇöµÇ¾î¾ß ÇÒ ½ÃÁ¡ÀÌ ÀÖÀ» °ÍÀÔ´Ï´Ù. ÀÌ °æ¿ì´Â ÀûÀýÇÑ ¼Ò¼ýÁ¡
ÀÌÇÏ ¸îÀÚ¸®·Î Ç¥ÇöÇÏ¸é »ç¿ëÇÏ¸é µÇ´Â °ÍÀÌÁö¿ä.


ÀÚ¹Ù¼­ºñ½º³Ý ÀÌ¿ø¿µ
Á¦¸ñ : Re: Java FloatÇüÀ¸·Î Ç¥Çö°¡´ÉÇÑ °¡Àå Å« ÀÚ¿¬¼ö
±Û¾´ÀÌ: ÀÌ¿ø¿µ(javaservice) 2003/02/04 23:23:12 Á¶È¸¼ö:2641 ÁÙ¼ö:81
IEEE 754 ±Ô¾à¿¡ µû¸¥ ºÎµ¿ ¼Ò¼öÁ¡ÀÇ ½Ì±Û Æ÷¸Ë ÇüÀÎ ÀÚ¹ÙÀÇ 4byte  floatÇü¿¡¼­
¼Ò¼ýÁ¡ ÀÌÇϸ¦ ¹ö¸° ÀÚ¿¬¼ö Áß, Ç¥Çö°¡´ÉÇÑ °¡Àå Å« ¼ö´Â 2ÀÇ 24½ÂÀÎ
16,777,216 ÀÔ´Ï´Ù.

31               23               15               7             0
S e e e e e e e  e 0 0 0 0 0 0 0  0 0 0 0 0 0 0 0  0 0 0 0 0 0 0 0
| |              | |                                             |
| +-- exponent --+ +---------significand(mantissa)---------------+
|
+- sign bit

- Bit 31 (the bit that is selected by the mask 0x80000000) represents the sign of
  the floating-point number. 
- Bits 30-23 (the bits that are selected by the mask 0x7f800000) represent
  the exponent. 
- Bits 22-0 (the bits that are selected by the mask 0x007fffff) represent
  the significand (sometimes called the mantissa) of the floating-point number. 
- positive infinity, the result is 0x7f800000
- negative infinity, the result is 0xff800000
- NaN, the result is 0x7fc00000
- let s, e, and m be three values that can be computed from the argument: 

 int s = ((bits >> 31) == 0) ? 1 : -1;
 int e = ((bits >> 23) & 0xff);
 int m = (e == 0) ?
                 (bits & 0x7fffff) << 1 :
                 (bits & 0x7fffff) | 0x800000;

 number value = s¡¤m¡¤2^(e-150)

E:\temp>java Test
Float.MAX_VALUE=2147483647
2^0 i:1         s:1     e:127   m:8388608       s*m*2^(e-150)=1
2^1 i:2         s:1     e:128   m:8388608       s*m*2^(e-150)=2
2^2 i:4         s:1     e:129   m:8388608       s*m*2^(e-150)=4
2^3 i:8         s:1     e:130   m:8388608       s*m*2^(e-150)=8
2^4 i:16        s:1     e:131   m:8388608       s*m*2^(e-150)=16
2^5 i:32        s:1     e:132   m:8388608       s*m*2^(e-150)=32
2^6 i:64        s:1     e:133   m:8388608       s*m*2^(e-150)=64
2^7 i:128       s:1     e:134   m:8388608       s*m*2^(e-150)=128
2^8 i:256       s:1     e:135   m:8388608       s*m*2^(e-150)=256
2^9 i:512       s:1     e:136   m:8388608       s*m*2^(e-150)=512
2^10 i:1024     s:1     e:137   m:8388608       s*m*2^(e-150)=1024
2^11 i:2048     s:1     e:138   m:8388608       s*m*2^(e-150)=2048
2^12 i:4096     s:1     e:139   m:8388608       s*m*2^(e-150)=4096
2^13 i:8192     s:1     e:140   m:8388608       s*m*2^(e-150)=8192
2^14 i:16384    s:1     e:141   m:8388608       s*m*2^(e-150)=16384
2^15 i:32768    s:1     e:142   m:8388608       s*m*2^(e-150)=32768
2^16 i:65536    s:1     e:143   m:8388608       s*m*2^(e-150)=65536
2^17 i:131072   s:1     e:144   m:8388608       s*m*2^(e-150)=131072
2^18 i:262144   s:1     e:145   m:8388608       s*m*2^(e-150)=262144
2^19 i:524288   s:1     e:146   m:8388608       s*m*2^(e-150)=524288
2^20 i:1048576  s:1     e:147   m:8388608       s*m*2^(e-150)=1048576
2^21 i:2097152  s:1     e:148   m:8388608       s*m*2^(e-150)=2097152
2^22 i:4194304  s:1     e:149   m:8388608       s*m*2^(e-150)=4194304
2^23 i:8388608  s:1     e:150   m:8388608       s*m*2^(e-150)=8388608
2^24 i:16777216 s:1     e:151   m:8388608       s*m*2^(e-150)=16777216
Max Float=16777216

new Float(16777216)=16777216
new Float(16777217)=16777216


Float
 http://www.javaservice.net/~java/docs/j2sdk_1.3.1/api/java/lang/Float.html#floatToIntBits(float) 
 http://www.javaservice.net/~java/docs/j2sdk_1.3.1/api/java/lang/Float.html#intBitsToFloat(int) 

Double
 http://www.javaservice.net/~java/docs/j2sdk_1.3.1/api/java/lang/Double.html#doubleToLongBits(double) 
 http://www.javaservice.net/~java/docs/j2sdk_1.3.1/api/java/lang/Double.html#longBitsToDouble(long) 

IEEE 754: Standard for Binary Floating-Point Arithmetic
http://grouper.ieee.org/groups/754/
http://mpu.yonsei.ac.kr/paper_scan/IEEEStandardForBinaryFloatingPointArithmetic.pdf

William Kahan and IEEE 754 
http://cch.loria.fr/documentation/IEEE754/
http://http.cs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF


ÀÚ¹Ù¼­ºñ½º³Ý ÀÌ¿ø¿µ

Download Test.java (1073 Bytes) Test.java (1073 Bytes)
Á¦¸ñ : Re: Ãß°¡Áú¹®, strictfp Ű¿öµå.
±Û¾´ÀÌ: ¼Õ´Ô(guest) 2003/02/07 00:49:14 Á¶È¸¼ö:1932 ÁÙ¼ö:2
ÀÚ¹ÙÀÇ strictfp Ű¿öµå¸¦ ¾²¸é À§ ³»¿ëÀÌ ´Þ¶óÁú ¼ö ÀÖ³ª¿ä?
¾Æ´Ï¸é ¿¬»ê °á°úÀÇ Á¤È®µµ¸¸ ³ô¾ÆÁö´Â°ÇÁö ±Ã±ÝÇÕ´Ï´Ù.
  [±Û¸ñ·Ï /½Ã°£¼ø] [´ä±Û¾²±â] [ÇÁ¸°Æ®]