1 00:00:00,000 --> 00:00:00,310 2 00:00:00,310 --> 00:00:01,750 >> DAVID Malan: Gadewch i ni yn awr chwythu eich meddwl. 3 00:00:01,750 --> 00:00:06,500 Mae'n troi allan yn y byd go iawn 1 rhannu 10 yn wir 1/10, neu 0.1. 4 00:00:06,500 --> 00:00:10,370 Ond mewn cyfrifiaduron mai dim ond yn cael gyfyngedig nifer o ddarnau i'w defnyddio i 5 00:00:10,370 --> 00:00:14,290 gynrychioli rhifau, ni allwch bob amser gynrychioli rhifau fel 1/10 gyda 6 00:00:14,290 --> 00:00:15,500 cywirdeb perffaith. 7 00:00:15,500 --> 00:00:18,640 Mewn geiriau eraill, cyfrifiaduron weithiau i wneud galwadau barn ac nid 8 00:00:18,640 --> 00:00:22,740 o reidrwydd yn cynrychioli nifer i chi eisiau mor fanwl ag y byddwch yn bwriadu. 9 00:00:22,740 --> 00:00:27,020 >> Er enghraifft, mae'n debyg fy mod yn mynd yn ôl i mewn i rhaglen hon a newid y 0.1 i, 10 00:00:27,020 --> 00:00:32,073 oh, 0.28, gan nodi bod Hoffwn printf i printf i 11 00:00:32,073 --> 00:00:34,350 28 o leoedd o drachywiredd. 12 00:00:34,350 --> 00:00:39,330 Gadewch i ni yn awr yn arbed ac yn llunio rhaglen, y tro hwn gyda gwneud floats2. 13 00:00:39,330 --> 00:00:41,910 Rhedeg gyda floats2 slaes dot. 14 00:00:41,910 --> 00:00:49,980 Ac, annwyl Duw, y tro hwn nid wyf yn gweld 0.1, ond 0.10000000, sydd yn eithaf 15 00:00:49,980 --> 00:00:51,070 da hyd yn hyn. 16 00:00:51,070 --> 00:00:57,830 Ond wedyn, 14901161193847656250. 17 00:00:57,830 --> 00:00:58,880 >> Wel, beth sy'n mynd ymlaen? 18 00:00:58,880 --> 00:01:02,280 Wel, mae'n ymddangos fod fflôt yn fel arfer yn storio y tu mewn cyfrifiadur 19 00:01:02,280 --> 00:01:03,500 gyda 32 darnau. 20 00:01:03,500 --> 00:01:07,340 32 yn amlwg yn nifer cyfyngedig, a oedd yn yn awgrymu y gallwch ond yn cynrychioli 21 00:01:07,340 --> 00:01:11,050 gyda 32 darnau nifer cyfyngedig o fel y bo'r angen gwerthoedd pwynt. 22 00:01:11,050 --> 00:01:14,980 Yn anffodus, mae hynny'n golygu bod y Ni all cyfrifiadur gynrychioli'r holl posibl 23 00:01:14,980 --> 00:01:18,110 rhifau pwynt arnawf, neu rhifau real, sy'n bodoli yn y byd, 24 00:01:18,110 --> 00:01:19,980 oherwydd ei fod dim ond cymaint o ddarnau. 25 00:01:19,980 --> 00:01:23,940 >> Ac felly yr hyn y mae'r cyfrifiadur yn ôl pob golwg wneud yn yr achos hwn yn cynrychioli 1/10 i 26 00:01:23,940 --> 00:01:26,880 y cefnogaeth symudol agosaf posibl gwerth pwynt y gall. 27 00:01:26,880 --> 00:01:31,050 Ond os ydym yn edrych, fel sydd gennym yma, i 28 lle degol, rydym yn dechrau gweld bod 28 00:01:31,050 --> 00:01:31,970 anfanyldeb. 29 00:01:31,970 --> 00:01:34,480 Felly, mae hyn yn broblem gyda dim ateb perffaith. 30 00:01:34,480 --> 00:01:38,060 Gallwn ddefnyddio dwbl yn hytrach na float, sy'n tueddu i ddefnyddio 64 darnau fel 31 00:01:38,060 --> 00:01:39,410 hytrach na 32. 32 00:01:39,410 --> 00:01:42,290 Ond wrth gwrs, 64 hefyd yn gyfyngedig, felly mae'r broblem yn 33 00:01:42,290 --> 00:01:43,630 yn parhau i fod hyd yn oed gyda dyblau. 34 00:01:43,630 --> 00:01:46,323