Jeg har lest om forskjellen mellom dobbel presisjon og enkel presisjon. I de fleste tilfeller ser det imidlertid ut til at float
og double
kan brukes om hverandre, dvs. at bruk av det ene eller det andre ikke ser ut til å påvirke resultatene. Er dette virkelig tilfelle? Når kan float og double brukes om hverandre? Hva er forskjellene mellom dem?
Dette er hva standardene C99 (ISO-IEC 9899 6.2.5 §10) eller C++2003 (ISO-IEC 14882-2003 3.1.9 §8) sier:
Det finnes tre typer flyttall:
float
,double
oglong double
. Typendouble
gir minst like stor presisjon somfloat
, og typenlong double
gir minst like stor presisjon somdouble
. Verdimengden av typenfloat
er en delmengde av verdimengden av typendouble
; verdimengden av typendouble
er en delmengde av verdimengden av typenlong double
.
C++-standarden legger til:
Verdirepresentasjonen av flyttallstyper er implementasjonsdefinert.
Jeg vil foreslå å ta en titt på den utmerkede What Every Computer Scientist Should Know About Floating-Point Arithmetic som dekker IEEE floating-point standard i dybden. Du vil lære om representasjonsdetaljene, og du vil innse at det er en avveining mellom størrelse og presisjon. Presisjonen til flyttallsrepresentasjonen øker når størrelsen avtar, og derfor er flyttall mellom -1 og 1 de med mest presisjon.
Flytende tall har mindre presisjon enn doble tall. Selv om du allerede vet det, kan du lese What WE Should Know About Floating-Point Arithmetic for bedre forståelse.