1 00:00:00,000 --> 00:00:00,310 2 00:00:00,310 --> 00:00:01,750 >> ДЕВІД Малан: Давайте тепер уб'є вас наповал. 3 00:00:01,750 --> 00:00:06,500 Виявляється, в реальному світі 1 розділеного насправді 10 січня / 10 або 0,1. 4 00:00:06,500 --> 00:00:10,370 Але в комп'ютерах, тільки кінцеве Число бітів, з яким 5 00:00:10,370 --> 00:00:14,290 представляти числа, ви не можете завжди представляти числа як 1/10 з 6 00:00:14,290 --> 00:00:15,500 ідеально точність. 7 00:00:15,500 --> 00:00:18,640 Іншими словами, комп'ютери іноді мають здійснювати дзвінки судження і не 8 00:00:18,640 --> 00:00:22,740 обов'язково відображають номер, який ви хочу настільки точно, наскільки ви маєте намір. 9 00:00:22,740 --> 00:00:27,020 >> Наприклад, припустимо, я йду назад в ця програма і змінити 0,1 до, 10 00:00:27,020 --> 00:00:32,073 ой, 0.28, тим самим показуючи, що Я хотів би Printf в Е до 11 00:00:32,073 --> 00:00:34,350 28 місць точності. 12 00:00:34,350 --> 00:00:39,330 Давайте тепер зберегти і скомпілювати програму, на цей раз з макіяжем floats2. 13 00:00:39,330 --> 00:00:41,910 Запустіть його з точковою слеш floats2. 14 00:00:41,910 --> 00:00:49,980 І, Боже, на цей раз я не бачу 0,1, але 0.10000000, який є досить 15 00:00:49,980 --> 00:00:51,070 добре до цих пір. 16 00:00:51,070 --> 00:00:57,830 Але тоді, +14901161193847656250. 17 00:00:57,830 --> 00:00:58,880 >> Ну, що відбувається? 18 00:00:58,880 --> 00:01:02,280 Ну, виходить, що поплавок зазвичай зберігається всередині комп'ютера 19 00:01:02,280 --> 00:01:03,500 з 32 біт. 20 00:01:03,500 --> 00:01:07,340 32, очевидно, кінцеве число, яке означає, що ви можете тільки уявити 21 00:01:07,340 --> 00:01:11,050 з 32 біт на кінцеве число з чисел з плаваючою комою. 22 00:01:11,050 --> 00:01:14,980 На жаль, це означає, що Комп'ютер не може представляти все можливо 23 00:01:14,980 --> 00:01:18,110 числа з плаваючою точкою, або дійсні числа, що існує в світі, 24 00:01:18,110 --> 00:01:19,980 тому що це тільки має так багато бітів. 25 00:01:19,980 --> 00:01:23,940 >> І так, що комп'ютер це, мабуть зроблено в цьому випадку являють собою 1/10 до 26 00:01:23,940 --> 00:01:26,880 найближчий можливо плаваючою коми, це можливо. 27 00:01:26,880 --> 00:01:31,050 Але якщо ми подивимося, як ми тут, по 28 знаків після коми, ми починаємо бачити, що 28 00:01:31,050 --> 00:01:31,970 неточність. 29 00:01:31,970 --> 00:01:34,480 Так що це проблема з не існує ідеального рішення. 30 00:01:34,480 --> 00:01:38,060 Ми можемо використовувати на двох осіб замість поплавка, який має тенденцію використовувати 64 біта в якості 31 00:01:38,060 --> 00:01:39,410 проти 32. 32 00:01:39,410 --> 00:01:42,290 Але, звичайно, 64 також конечна, так що проблема буде 33 00:01:42,290 --> 00:01:43,630 залишаються навіть з двійниками. 34 00:01:43,630 --> 00:01:46,323