ДЕВІД Малан: Давайте тепер уб'є вас наповал. Виявляється, в реальному світі 1 розділеного насправді 10 січня / 10 або 0,1. Але в комп'ютерах, тільки кінцеве Число бітів, з яким представляти числа, ви не можете завжди представляти числа як 1/10 з ідеально точність. Іншими словами, комп'ютери іноді мають здійснювати дзвінки судження і не обов'язково відображають номер, який ви хочу настільки точно, наскільки ви маєте намір. Наприклад, припустимо, я йду назад в ця програма і змінити 0,1 до, ой, 0.28, тим самим показуючи, що Я хотів би Printf в Е до 28 місць точності. Давайте тепер зберегти і скомпілювати програму, на цей раз з макіяжем floats2. Запустіть його з точковою слеш floats2. І, Боже, на цей раз я не бачу 0,1, але 0.10000000, який є досить добре до цих пір. Але тоді, +14901161193847656250. Ну, що відбувається? Ну, виходить, що поплавок зазвичай зберігається всередині комп'ютера з 32 біт. 32, очевидно, кінцеве число, яке означає, що ви можете тільки уявити з 32 біт на кінцеве число з чисел з плаваючою комою. На жаль, це означає, що Комп'ютер не може представляти все можливо числа з плаваючою точкою, або дійсні числа, що існує в світі, тому що це тільки має так багато бітів. І так, що комп'ютер це, мабуть зроблено в цьому випадку являють собою 1/10 до найближчий можливо плаваючою коми, це можливо. Але якщо ми подивимося, як ми тут, по 28 знаків після коми, ми починаємо бачити, що неточність. Так що це проблема з не існує ідеального рішення. Ми можемо використовувати на двох осіб замість поплавка, який має тенденцію використовувати 64 біта в якості проти 32. Але, звичайно, 64 також конечна, так що проблема буде залишаються навіть з двійниками.