DAVID Malan: Gadewch i ni yn awr chwythu eich meddwl. Mae'n troi allan yn y byd go iawn 1 rhannu 10 yn wir 1/10, neu 0.1. Ond mewn cyfrifiaduron mai dim ond yn cael gyfyngedig nifer o ddarnau i'w defnyddio i gynrychioli rhifau, ni allwch bob amser gynrychioli rhifau fel 1/10 gyda cywirdeb perffaith. Mewn geiriau eraill, cyfrifiaduron weithiau i wneud galwadau barn ac nid o reidrwydd yn cynrychioli nifer i chi eisiau mor fanwl ag y byddwch yn bwriadu. Er enghraifft, mae'n debyg fy mod yn mynd yn ôl i mewn i rhaglen hon a newid y 0.1 i, oh, 0.28, gan nodi bod Hoffwn printf i printf i 28 o leoedd o drachywiredd. Gadewch i ni yn awr yn arbed ac yn llunio rhaglen, y tro hwn gyda gwneud floats2. Rhedeg gyda floats2 slaes dot. Ac, annwyl Duw, y tro hwn nid wyf yn gweld 0.1, ond 0.10000000, sydd yn eithaf da hyd yn hyn. Ond wedyn, 14901161193847656250. Wel, beth sy'n mynd ymlaen? Wel, mae'n ymddangos fod fflôt yn fel arfer yn storio y tu mewn cyfrifiadur gyda 32 darnau. 32 yn amlwg yn nifer cyfyngedig, a oedd yn yn awgrymu y gallwch ond yn cynrychioli gyda 32 darnau nifer cyfyngedig o fel y bo'r angen gwerthoedd pwynt. Yn anffodus, mae hynny'n golygu bod y Ni all cyfrifiadur gynrychioli'r holl posibl rhifau pwynt arnawf, neu rhifau real, sy'n bodoli yn y byd, oherwydd ei fod dim ond cymaint o ddarnau. Ac felly yr hyn y mae'r cyfrifiadur yn ôl pob golwg wneud yn yr achos hwn yn cynrychioli 1/10 i y cefnogaeth symudol agosaf posibl gwerth pwynt y gall. Ond os ydym yn edrych, fel sydd gennym yma, i 28 lle degol, rydym yn dechrau gweld bod anfanyldeb. Felly, mae hyn yn broblem gyda dim ateb perffaith. Gallwn ddefnyddio dwbl yn hytrach na float, sy'n tueddu i ddefnyddio 64 darnau fel hytrach na 32. Ond wrth gwrs, 64 hefyd yn gyfyngedig, felly mae'r broblem yn yn parhau i fod hyd yn oed gyda dyblau.