Ik'heb gelezen over het verschil tussen dubbele precisie en enkele precisie. Echter, in de meeste gevallen lijken float
en double
uitwisselbaar te zijn, d.w.z. het gebruik van de een of de ander lijkt geen invloed te hebben op de resultaten. Is dit werkelijk het geval? Wanneer zijn floats en doubles uitwisselbaar? Wat zijn de verschillen tussen beide?
Dit is wat de standaard C99 (ISO-IEC 9899 6.2.5 §10) of C++2003 (ISO-IEC 14882-2003 3.1.9 §8) normen zeggen:
Er zijn drie floating point types:
float
,double
, enlong double
. Het typedubbel
biedt ten minste evenveel precisie alsfloat
, en het typelong double
biedt ten minste evenveel precisie alsdouble
. De verzameling van waarden van het typefloat
is een deelverzameling van de verzameling van waarden van het typedouble
; de verzameling van waarden van het typedouble
is een deelverzameling van de verzameling van waarden van het typelong double
.
De C++ standaard voegt toe:
De waarde representatie van floating-point types is implementatie-gedefinieerd.
Ik stel voor dat u het uitstekende What Every Computer Scientist Should Know About Floating-Point Arithmetic bekijkt dat de IEEE floating-point standaard diepgaand behandelt. Je zult meer te weten komen over de details van de representatie en je zult je realiseren dat er een wisselwerking is tussen grootte en precisie. De precisie van de drijvende komma-representatie neemt toe naarmate de magnitude afneemt, vandaar dat drijvende komma-getallen tussen -1 en 1 die zijn met de meeste precisie.
Drijvende getallen hebben minder precisie dan dubbeltallen. Hoewel je het al weet, lees Wat WE Moeten Weten Over Zwevende-Kommagere Rekenkunde voor een beter begrip.