1.1 + 0.1 == 1.2
< false
1.1 + 0.1 > 1.2
< true
μ«μ 5μΈ κ²½μ°
μ«μ 8μΈ κ²½μ°
μ«μ 10μΈ κ²½μ°
λ ν° μ«μλ₯Ό μ μ₯νκ³ μΆμ κ²½μ°
16μΉΈμΌλ‘ λλ €μ μ μ₯ν μ μλ€.
5.125κ°μ μμ μ μ₯μ?
5.125 => 101.001(2μ§μ)
(μ΄κ±°λ§κ³ IEEEλΌλ κ³³μμ κΆμ₯νλ λ°©λ²μ΄ μλ€)
5.125 μ μ₯νλ €λ©΄ 32μΉΈ μ λμ μ¬μ μλ μΉΈμ λ§λ€μ΄λκ³
μμμΈμ§ μμμΈμ§ μ¬λΆ νμΈ
μμλΌλ©΄ 0, μμλΌλ©΄ 1μ κΈ°μ ν΄μ€λ€.
μ μ₯ν μ«μλ₯Ό 2μ§λ²μΌλ‘ λ³νμ ν λ€μμ . μ°μ λΆλΆμ μΌμͺ½μΌλ‘ λκΉμ§ μ΄λμ ν΄μ€λ€.
- 5.125 => 101.001 => 1.01001 x 22
- 1.011001 x 22 (5.125 2μ§μ λ²μ )
1.01001 μ¬κΈ°μμ . λ€μ ν΄λΉνλ λΆλΆ 01001μ mantissaλΌκ³ λΆλ₯Έλ€.
λΆλμμμ λ°©μμμ κ°μλΆλΌκ³ λΆλ¦¬λ©°, 23λΉνΈ, κ°μ λλ μ ν¨μ«μλ₯Ό λνλΈλ€.
맨λ€μ 23μΉΈμ λ°μ΄λ£λλ€.
μ§μ λΆκ·Όμ 2 + 127 => 10000001 (2μ§λ²μΌλ‘ λ³νν΄μ μμ 8μΉΈμ λ£μ΄μ€λ€)
10μ§μ 0.125 μ«μ κ°μ κ²½μ°μλ 2μ§μλ‘ λ³νν μ 0.001 μ΄λΌλ μ«μλ‘ κΉλνκ² λ³νμ΄ λλ€.
νμ§λ§, 0.1 κ°μ μ 맀ν μ«μλ 2μ§μλ‘ λ³νν κ²½μ° λ¬΄ν 1100 ν¨ν΄μ΄ λ°λ³΅λλ€.
32μΉΈμ λ£μ μ«μμΈμ νμν΄μ£Όμ§ μμ μ«μμ λν΄ μ€μ°¨κ° λ°μν μ μλ€.
μ½λλ₯Ό μμ±νλ€κ° 0.1 κ°μ μ«μλ₯Ό λ©λͺ¨λ¦¬μ μ μ₯νλ€κ³ ν΄λ μ νν μ«μ 0.1λ₯Ό μ μ₯νκ² μλλ€. 0.1κ³Ό λΉμ·ν μ«μλ₯Ό μ μ₯νμ λΏμ΄λ€.
κ·Έλ κΈ° λλ¬Έμ 0.1κ³Ό 1.1 μ λνμ λ λμ€λ μ«μκ° 1.2κ° μλλ€.
μ νν κ³μ°νλ €λ©΄ μ«μλ μ μλ‘ λ³΄κ΄ν΄μΌνλ€.
μλ₯Ό λ€λ©΄, 5.1 λ¬λ¬μΈ κ²½μ°λ 5100μΌνΈλ‘ x100μ κ³±ν΄μ μ μ₯νλκ² μ’λ€.
floatλ₯Ό κ΅³μ΄ μ¨μΌνλ κ²½μ°μλ λ°μ¬λ¦Ό λ¬Έλ²μ μ¬μ©νλ κ²μ΄ ν΄κ²°λ²μ΄ λ μ μλ€.
μλλ©΄ double μλ£νμΌλ‘ => μ«μ 1κ°λΉ 64μΉΈ μ¬μ©
μΆκ°λ‘ 곡λΆν λ΄μ©
Reference