C++-kielessä on liukulukuja varten kaksi erilaista (erikokoista) tyyppiä, float ja double. Koska nykyisissä tietokoneissa on yleensä riittämiin muistia, kannattaa liukuluvut aina esittää double tyyppisinä. Tällöin esitystarkkuus voidaan säilyttää kaikissa tilanteissa parempana.
Borlandin C++-kääntäjä varaa float-liukuluvulle 32 bittiä (4 tavua) tilaa muistista. Muuttujalla saavutetaan noin 7 merkitsevän numeron tarkkuus. Kaksoistarkkuuden luvulle (double tai long float) varataan tilaa 8 tavua, jolloin luvun tarkkuus on noin 15 numeroa.
Tarkastellaan esimerkkiohjelmaa DOUBLE.CPP.
/* ********************************************************* DOUBLE.CPP Lukee näppäimistöltä kaksoistarkkuuden liukuluvun ja tulostaa sen näytölle 20 desimaalilla. ********************************************************* */ #include <iostream.h> #include <stdio.h> int main(void) { double luku; cout << "Anna luku > "; // tulostetaan näytölle kehote cin >> luku; // luetaan luku näppäimistöltä printf("Annoit luvun %.20lf\n", luku); // tulostetaan luku return 0; }
Testattaessa ohjelmaa luvulla 0.12345678901234567890 saadaan tuloste
Anna luku > 0.12345678901234567890 Annoit luvun 0.12345678901234567700
ja luvulla 12345.123456789012345 saadaan tuloste
Anna luku > 12345.123456789012345 Annoit luvun 12345.12345678901150000000
Kaksoistarkkuuden luvuilla saavutettiin näin ollen 15 numeron tarkkuus.
Liukulukujen tallennustavasta johtuen ei voida koskaan olettaa, että luku olisi ehdottoman tarkka, tai että syöttämämme luku säilyisi täsmälleen samana koneessa tallennettuna.