рдЬрд╛рд╡рд╛ 2.2250738585072012e-308 рдкрд░ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИ

Konstantin Preisser рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдХреБрдЫ рдмрд╣реБрдд рд╣реА рд░реЛрдЪрдХ рдЦреЛрдЬ рдХреА: рдЬрд╛рд╡рд╛ - рд░рдирдЯрд╛рдЗрдо рдФрд░ рдХрдВрдкрд╛рдЗрд▓рд░ - рджреЛрдиреЛрдВ рдПрдХ рдЕрдВрддрд╣реАрди рд▓реВрдк рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рджрд╢рдорд▓рд╡ 2.2250738585072012e-308



рдХреЛ рдбрдмрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╕рдВрдЦреНрдпрд╛ рдХреЛ 0x1p-1022



рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рдд, 0x1p-1022



ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрд╛рд╡рд╛ 0x0.fffffffffffffp-1022



рдкрд░ рдЬрдорд╛ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рджреЛрд╣рд░реЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рд╣реИред



рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЕрдВрддрд╣реАрди рд▓реВрдк

 class RuntimeHang { public static void main(String[] args) { System.out.println("Test:"); double d = Double.parseDouble("2.2250738585072012e-308"); System.out.println("Value: " + d); } }
      
      







рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдЕрдВрддрд╣реАрди рд▓реВрдк



( рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдПрдХреНрд▓рд┐рдкреНрд╕ рдореЗрдВ рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рд╕рдм рдХреБрдЫ рд╕рд╣реЗрдЬрдирд╛ рди рднреВрд▓реЗрдВ, рдЕрдиреНрдпрдерд╛ рдЖрдк рдЗрд╕рдХреА рдЫрд╛рдпрд╛ рд╕рдВрдХрд▓рди - рд▓рдЧрднрдЧ) рдХреЗ рд╕рд╛рде рдЕрдкрдиреЗ рд╣реЛрд╢ рдореЗрдВ рдирд╣реАрдВ рдЖ рдкрд╛рдПрдВрдЧреЗ ред
 class CompilationHang { public static void main(String[] args) { double d = 2.2250738585072012e-308; System.out.println("Value: " + d); } }
      
      





рдмрд┐рд▓реНрд▓реА рдХреЗ рддрд╣рдд, рдЗрд╕ рдШрдЯрдирд╛ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦрдХ рдХрд╛ рддрд░реНрдХред



рдорд╛рдорд▓рд╛ рдХреНрдпрд╛ рд╣реИ?



рдХреЛрдиреНрд╕реНрдЯреЗрдВрдЯрд┐рди рдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдлреНрд▓реЛрдЯрд┐рдВрдЧрдбреЗрд╕рд┐рдорд▓.рдЬрд╛рд╡ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рд╕рдорд╕реНрдпрд╛ "рд╕реБрдзрд╛рд░ рдЪрдХреНрд░" рдореЗрдВ рд╣реИред рд╡рд╣ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:



рдпрджрд┐ рдЖрдк рдЗрд╕ рднрд╛рдЧ рдХреЛ рдХрдореЗрдВрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ Double.parseDouble(String s)



рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИрдВрдЧрдЕрдк рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ Double.parseDouble(String s)



, рдЬреЛ sun.misc.FloatingDecimal.readJavaFormatString(s).doubleValue()



рдХрд╣рддрд╛ рд╣реИ sun.misc.FloatingDecimal.readJavaFormatString(s).doubleValue()



рд╢реБрджреНрдз рдЬрд╛рд╡рд╛ рдХреЛрдб рд╣реИ, рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдЕрдВрдХрдЧрдгрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рдВрдХрд▓рдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ JRE рдФрд░ javac рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдП рдЧрдП рдереЗред



рд╕реБрдзрд╛рд░ рдЪрдХреНрд░ рдХреЗ рдмрд┐рдирд╛, рдРрд╕реЗ рдмрд┐рдЯреНрд╕ (рдмрдбрд╝рд╛ рдПрдВрдбрд┐рдпрди) рдЖрдЙрдЯрдкреБрдЯ рд╣реИрдВ:

 00000000 00001111 11111111 11111111 11111111 11111111 11111111 11111111
      
      





рдЕрд░реНрдерд╛рддреН, рдШрд╛рддрд╛рдВрдХ рд╢реВрдиреНрдп рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдВрдЦреНрдпрд╛ рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЕрд╕реНрдерд╛рдпреА рдлреНрд▓реЛрдЯрд┐рдВрдЧ-рдкреЙрдЗрдВрдЯ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИред рд╕реБрдзрд╛рд░ рдЪрдХреНрд░ рдХреЗ рдмрд┐рдирд╛, рдПрдХ рд╣реА рдмрд╛рдд 2.2250738585072013e-308



рд╕рд╛рде 2.2250738585072013e-308



, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрджрд┐ рдЖрдк рдЪрдХреНрд░ рдХреЛ 2.2250738585072013e-308



рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

 00000000 00010000 00000000 00000000 00000000 00000000 00000000 00000000
      
      









рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ



рдореИрдВрдиреЗ 32- рдФрд░ 64-рдмрд┐рдЯ рд╣реЙрдЯрд╕реНрдкреЙрдЯ рдФрд░ 64-рдмрд┐рдЯ рдУрдкрдирдЬреЗрдбрдХреЗ рдкрд░ рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрд╛рдВрдЪ рдХреА рдФрд░ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, PHP рдореЗрдВ рдПрдХ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛ рд╣реИ ред рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯрд┐рди рдкреНрд░рд┐рд╕рд░ рдкрд╣рд▓реЗ рд╣реА рдПрдХ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рднреЗрдЬ рдЪреБрдХрд╛ рд╣реИред



All Articles