μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 | 28 |
- λ μ΄μΊμ€ν
- schema first
- psql extension
- GraphQL
- ν μ€νΈλΆ
- μ°½μ
- enable_if
- μ΄μ λΈλ¦¬
- 42seoul
- μλ£κ΅¬μ‘°
- μ€νλ¦Ών€λ³΄λ
- SFINAE
- Cloud Spanner
- νμ΄μ¬
- λΆλμμμ
- μ£μ§μ»΄ν¨ν
- adminbro
- uuid-ossp
- μ΄μ λΈλ¦¬μ΄
- μ€ννΈμ
- νλΌμ΄λΉν΄λΌμ°λ
- λ컀
- raycasting
- λλ£νμ΅
- μ΄λ Έλ² μ΄μ μμΉ΄λ°λ―Έ
- mistelν€λ³΄λ
- 42μμΈ
- μΏ λ²λ€ν°μ€
- μ λ ¬
- c++
- Today
- Total
written by yechoi
(λ²μ) λΆλμμμ μ μ΄ν΄νκ³ μ¬μ©νκΈ° λ³Έλ¬Έ
πμ΄ κΈμ Jeff Bezansonμ Understanding and Using Floating Point Numbersλ₯Ό λ²μνμ΅λλ€. λ€μ μμν λΆλΆμ΄ μμΌλ©°, μ€μν λΆλΆμ΄ μλ€λ©΄ λκΈμ λΆνλ립λλ€.
C++ Article - Understanding Floating Point Numbers - Cprogramming.com
Understanding and Using Floating Point Numbers by Jeff Bezanson Numbers are surely the most prevalent kind of data in computer programs. They are so fundamental that people don't spend much time talking about them—surely everybody knows how to use number
www.cprogramming.com
μ«μκ° μ»΄ν¨ν° νλ‘κ·Έλ¨μμ κ°μ₯ νν λ°μ΄ν°λΌλ κ²μ νμ€ν©λλ€. λ무λλ κΈ°μ΄μ μΈ λλ¨Έμ§ μ¬λλ€μ μ«μμ λν΄ λ§μ΄ λ Όμνμ§ μμ΅λλ€. λͺ¨λ μ¬λλ€μ νλ‘κ·Έλ¨μμ μ«μλ₯Ό μ¬μ©νλ λ°©λ²μ μκ³ μλ€κ³ μκ°ν΄μ. κ·Έλ μ§λ§ νλ‘κ·Έλλ°μ μΈκ³μμ κ°μ₯ νμμ μΈ κ² μ€ νλλ λΉμ μ΄ λ§μ£Όνλ λͺ¨λ κ²μ΄ μμμ΄μμ΄λΌλ κ²μ΄μ£ .
λλΆλΆμ νλ‘κ·Έλλ¨Έλ€μ λΆλμμμ μ€μμ λν΄ μ΄μν μ μ λ£κ±°λ λ΄€μ κ²μ λλ€. μλ₯Ό λ€μ΄, μ°λ¦¬λ μ’ μ’ κ°μ 보μ΄λ λΆλμμμ μ€μκ° Cμ '==' 쑰건μ λΆν©νμ§ μλλ€λ κ²μ λ°κ²¬νκ³€ ν©λλ€. μ΄λ¬ν μ΄μ λ‘ μ΄λ³΄ νλ‘κ·Έλλ¨Έλ€μ λΆλμμμ μ€μμλ ==λ₯Ό μ λ μ¬μ©νμ§ μλλ‘ λ°°μ°κΈ°λ νμ£ . λλλ‘ μ°λ¦¬λ λ€λ₯Έ μμΈμ μΈ κ²½μ°μ λΆλͺνκΈ°λ ν©λλ€. μλ₯Ό λ€μ΄ μνμ μΌλ‘ λ§μ΄ λλ μμμ΄, λΆλμμμ μ μ°κΈ°λ§ νλ©΄ μ€λ§μ€λ¬μΈ μ λλ‘ μ ννμ§ μκ±°λ 무μμμ κ²°κ³Όλ₯Ό λ΄λ±κΈ°λ ν©λλ€.
μ΄λ€ μΌμ΄ μΌμ΄λλ κ±ΈκΉμ? λΆλμμμ μ€μμ κ΄ν΄μ μ§κ΄μ μ΄κΈλλ κ²λ€μ΄ λ§κ³ , μ΄λ¬ν νΉμ± λλ¬Έμ μ°λ¦¬λ λΆλμμμ μ€μλ₯Ό νλ‘κ·Έλ¨μμ μ¬μ©νλ©΄μ μ¬λ¬κ°μ§λ₯Ό λ°°μ°κ² λ©λλ€.
λΆλμμμ μ€μλ μ°©μ ν¨κ³Όλ₯Ό μΌμΌν΅λλ€. 10μ§λ²μ΄λ μμ£Ό μκ±°λ ν° μλ‘λ ννλλ©΄μ ’μ€μ ’ μ«μμ²λΌ 보μ΄λ κ±°μ£ . νμ€μμ κ°μ 4λ°μ΄νΈλ‘ νννλ€κ³ νμ λ, μ€μλ³΄λ¨ μ μλ₯Ό μ λλ‘ ννν©λλ€. μ΄μ λ λΉμ°νκ²λ λΆλ μμμ μ€μμ λν λ΄λΆμ μΈ ννμ΄ κ°λ¨νμ§ μκΈ° λλ¬Έμ λλ€. μ μλ₯Ό νννλ λΉνΈλ κ·Έ μμ²΄λ‘ μ΄μ§λ²μ μμ΄μ§λ§, λΆλμμμ μ€μλ₯Ό νννλ λΉνΈλ μ’λ 볡μ‘νκ² ν΄μλ©λλ€. μ΄ ννλ²μ λν΄μ λμ€μ κΈΈκ² μ€λͺ νλλ‘ νκ³ , λ¨Όμ μ μμ μ€μμ κ°λ μ μΈ μ°¨μ΄λ₯Ό μμ보λλ‘ ν κ²μ.
1. Accuracy vs. Precision
μΈ‘μ κ°λ μ€μμ Accuracyμ Precisionμ μ μμ μ€μμ λ€λ₯Έ νΉμ±μ μ μ€λͺ ν©λλ€(μ΄λ€ μμ€ν μμλ, μ΄λ€ μμ ννλ²μ΄ μ¬μ©λλλΌλ μ΄λ λ§μ°¬κ°μ§μμ.). "accuracy"λ μΈ‘μ μΉκ° μ€μ κ°μ μΌλ§λ λΉμ·νμ§λ₯Ό λνλ΄λ κ°μ λλ€. λ°λ©΄ "precision"μ μμ κ΄ν΄ μΌλ§ λ§νΌμ μ 보λ₯Ό κ°μ§κ³ μλμ§, μ΄λ₯Ό λΉμ μ΄ μΌλ§λ λ μ°½μ μΌλ‘ ννν΄λλμ§μ κ΄λ ¨λΌ μμ΅λλ€.
μ μ κ³μ°μ μλ²½ν μ νν΄μ. (μ μ "2"κ° μλ€λ©΄, 그건 μ νν 2μΈκ±°μ£ . λꡬλ μ΄ μ¬μ€μ μ΄μ μ κΈ°ν μ μμ΄μ.) λμ±μ΄ μ¬κΈ°μ 1μ λνλ©΄, μ νν 3μ μ»μ κ²μ΄λ κ±Έ μμ£ . μ μλ‘ μ΄λ€ κ³μ°μ νλ κ°μ, μ€λ²νλ‘μ°λ§ μλ€λ©΄μΌ λΉνΈ λ¨μλ‘ μ νν μλ₯Ό μ»κ² λ κ²λλ€. κ·Έλ¬λ μ μμ precisionμ΄ λΆμ‘±ν΄μ. μλ₯Ό λ€μ΄ 5μ 4λ₯Ό κ°κ° 2λ‘ λλλ©΄, λλ€ 2λΌλ κ²°κ³Όλ₯Ό λ΄μ. μ μλ μ‘°κ°λ λΆλΆμ λν΄μ μ 보λ₯Ό κ°μ§κ³ μμ§ μμμ. 4λ³΄λ€ μ½κ° ν¬κ³ 5보λ€λ μμ μκ° μλ€κ³ νλ©΄, 4λ³΄λ€ ν° λΆλΆμ μ 보λ μμ΄λ²λ¦¬μ£ . μ μλ λ―ΈμΈν λ³νλ₯Ό λννκΈ°μ λ무 ν¬λ°ν΄μ. μ μλ₯Ό μ¬μ©νλ 건 λ²½λμ μλ κ²κ³Ό κ°μ£ . μ μ‘면체λ₯Ό λ§λ λ€λ©΄ λ²½λμ΄ μμ£Ό λ±μ΄κ² μ§λ§, ꡬλ₯Ό λ§λ λ€κ³ μκ°νλ©΄ λ²½λμ κ·Έλ₯ μ’μ μ νμ μλμ£ . (κ΅¬κ° λ²½λλ³΄λ€ μμ£Ό ν¬λ€λ©΄, λΉμ·νκ² λ§λ€μ΄λ³Ό μλ μκ² λ€μ.)
μ€μλ accuracyμ precisionμ μμ΄μ μ μμ μ λ°λμ λλ€. λΉμ μ΄ νννλ €λ μμ λν μ 보λ₯Ό μλμ μΌλ‘ λ²λ¦¬λ μΌμ μ λ μμΌλ―λ‘ μ’μ precisionμ κ°μ§κ³ μμ΄μ. λΉνΈλ§ λ§λ€λ©΄ μλμ μλ₯Ό μ»κΈ° μν΄ μ΄λ€ FP κ³μ°λ λλ릴 μ μμ£ . λ§μΉ λΉνΈλ§ μΆ©λΆνλ©΄ μμ£Ό ν° μ μλ ννν μ μλ κ²μ²λΌμ. κ·Έλ¬λ μμμ μ΄ μλ μλ μ νλκ° λΆμ‘±ν©λλ€. μ μκ° λ²½λκ°λ€λ©΄, μ€μλ λ©μ²ν νΌν° κ°μμ. 볡μ‘ν 곑면 λͺ¨μμ λ°λ₯΄λλ‘ ν΅μ ν μλ μμ§λ§, μμ£Ό λ± λ§κ² μΉ νλ €λ©΄ μμ Έλμ€μ£ . νΌν°λ‘ μλ²½ν μ μ‘면체λ₯Ό λ§λ λ€κ³ μκ°ν΄λ³΄μΈμ. λͺ¨μ리 λΆλΆμ μλ²½νκ² λ μΉ΄λ‘κ² λ§λ€ μ μμ κ±°μμ. μ¬μ€ λ§μ κ²½μ°μμ μμμ μ«μμ κ²°κ³Όκ° μ€μ μμ λΉνΈ λ¨μλ‘ μ νν μΌμΉν리λΌκ³ κΈ°λνλ 건 λ§κ·Έλλ‘ κ°λ§μλ μΌμ λλ€.
λͺ¨λ λ©΄μ΄ λ°μ΄λ리μμ μ νν ννλ μλ μλ€λ μ μμ μ€μλ νμμ μΌλ‘ μ μμ λ€λ¦ λλ€. λ°μ΄λ리 κ³μ°μ ννλ 건 μλλλ€. μ΄λ€ μ§λ² μμ€ν μμλ μ΄λ¬ν μ μ½μ λ§μ°¬κ°μ§μ λλ€. 1/3μ μκ°ν΄λ³΄μΈμ. λλμ§ μλ 10μ§λ² νν(e.g 0.333333)λ 1/3κ³Ό κ°λ€κ³ ν μ μμ£ . 3μ λλ μμ΄ κ°μ Έλ€ μ΄λ€ν΄λ μ ννκ² ννν μ μμ κ²λλ€. λ°λΌμ νμ λ μμμ μ리μλ‘ κ³μ°λ κ²°κ³Όλ₯Ό μ νν ννν μ μλ€κ³ 보λ κ² λ«κ² λ€μ. λΉμ μ΄ λ¬΄μΌνλ κ²°κ³Όλ μ€μ μ μ‘°κΈμ ν릴 μ λ°μ μμ΅λλ€. κ·ΈλΌμλ μ°λ¦¬λ μ€μκ° μ¬μ ν μ μ©νλ€λ κ²μ μκΈ° λλ¬Έμ, λ°μ¬λ¦Ό μλ¬ μν©μ νμ ν΄ λ¬Έμ λ₯Ό λ°©μ§νλ νΈμ΄ λ«μ£ . μ΄λ₯Ό μν΄μλ μλλ©΄ κ΅μμ μν΄μλΌλ, μμκ° μ€μ λ‘ μ΄λ»κ² μλνλμ§ μλ 건 μ’μ μΌμ λλ€.