4.4.2 Pyöristysvirheet

Liukulukuja käytettäessä luvut esitetään likiarvoina. Käytännössä tämä tarkoittaa sitä, että luku pyöristyy aina lähimpään liukulukuun. Tästä aiheutuu pyöristysvirheitä, jotka saattavat nousta hyvinkin merkittäviksi (ainakin, jos liukulukulaskentaa on hyvin paljon). Luvun esityksen tarkkuus riippuu suoraan mantissalle ja eksponentille varattujen bittien määrästä.

Esitetään esimerkiksi luku 28.8 kuudella mantissa- ja kuudella eksponenttibitillä. (Yksinkertaisuuden vuoksi tallennetaan mantissan kaikki bitit ja eksponentti esitetään suoraan ilman vakion lisäämistä.) Luku saadaan sopivaan normeerattuun muotoon valitsemalla eksponentiksi 5, jolloin luku voidaan esittää

0.9*25 = 28.8

Tällöin liukulukuesitys mainitun kokoisella mantissalla ja eksponentilla on

0

000101

111001

Lasketaan tämän esityksen tarkka arvo. Mantissan arvo on

1*2-1 + 1*2-2 + 1*2-3 + 0*2-4 + 0*2-5 + 1*2-6
= 0.5 + 0.25 + 0.125 + 0 + 0 + 0.015625
= 0.890625

Näin ollen saatu liukulukuesitys esittääkin lukua

0.890625*25 = 0.890625*32 = 28.5

Lukujen esitystarkkuuteen vaikuttaa siis mantissan ja eksponenttien bittien määrä.

Liukulukujen kattama lukualue ei myöskään ole homogeeninen: Liukuluvuilla esitettävissä olevien lukujen tiheys kasvaa luvun itseisarvon lähestyessä nollaa. Pienin lukuun tapahtuva lisäys ja siten pienin kahden luvun välinen erotus nähdään mantissan oikeanpuolimmaisen bitin eli vähiten merkitsevän bitin arvosta.

Jos luvun mantissalle on varattu 6 bittiä, kuten edellisessä esimerkissä, on mantissan vähiten merkitsevän bitin arvo

2-6 = 0.015625

Luvun suuruusluokan määrää eksponentti, jonka mukaisella kakkosen potenssilla mantissa kerrotaan. Seuraavassa taulukossa esitetään eksponentin arvon suurta merkitystä lukuun. Kun eksponentti on esimerkiksi 10, aiheuttaa pieni muutos mantissan arvossa suuren muutoksen koko luvun arvossa. Siis potenssin 10 tapauksessa, kun mantissa muuttuu 0.015625 verran, muuttuu koko luvun arvo 16:lla. Seuraavassa taulukossa on esitetty vastaavat luvut muutamilla muilla potenssiarvoilla:

eksponentti

mantissan muutos 0.015625

lukuarvon muutos

10

0.015625*210

16

5

0.015625*25

0.5

0

0.015625*20

0.015625

-4

0.015625*2-4

0.0009765625

-8

0.015625*2-8

0.00006103515625

Taulukosta huomataan, että mitä suurempi eksponentti on, sitä suurempia "aukkoja" lukualueeseen jää. Jos esimerkiksi eksponentti on 10, normeeratun liukuluvun esittämä lukualue on 0.5*210 luku < 1*210 eli 512 luku < 1024, missä eri lukujen pienin erotus on 16. Siis lukuja kyetään esittämään vain 16:n välein tai sitä harvempaan. Näin ollen kyseisellä kuuden bitin mantissalla ei kyetä erottamaan lukuja 537, 544 ja 551 toisistaan.