Vill du att programmet du skapar ska klara av reella tal måste variabeldeklarationerna vara av datatypen double eller float. I programmeringssammanhang brukar reella tal kallas för flyttal.

Skillnaden mellan double och float är dels det minnesutrymme de kräver samt talomfång och noggrannhet. Double är både noggrannare och mer minneskrävande än float. Man kan även använda datatypen long double vilken är ett strå vassare.

  Decimaltal skriv i C++ med punkt, inte kommatecken.

Om du använder heltalsvariabler (datatyp int) men i din beräkning erhåller ett decimaltal, så stryks decimalerna (avrundas neråt till närmaste heltal). Detta kan ge konstiga resultat i stil med nedanstående exempel:

10 / 5 = 2 men även 14 / 5 = 2

Följden blir att vi måste vara noga vid val av datatyp så att rätt talområde och noggrannhet erhålls. Vid division så räcker det med att ett av talen är ett flyttal för att kvoten ska bli ett flyttal.

 

  Division
  flyttal / flyttal = flyttal
  flyttal / heltal = flyttal
  heltal / flyttal = flyttal
  heltal / heltal = heltal

 

Siffror som du skriver i ditt program behandlas som heltal om du inte angett en decimalpunkt. Antag att du konstruerat ett program som beräknar tredjedelen av ett heltal som användaren anger och att en del av din kod ser ut som nedanstående.

 

cout<<"Ange ett heltal"<<endl;
int tal;
cin>>tal;
cout<<"En tredjedel av talet blir "<<tal/3<<endl;           
Om användaren anger t.ex. 8 så kommer programmet att svara att en tredjedel är 2. Självklart är inte det ett bra resultat, så koden borde sett ut som följande:

 

cout<<"Ange ett heltal"<<endl; 
int tal; 
cin>>tal; 
cout<<"En tredjedel av talet blir "<<tal/3.0<<endl;
I det sista fallet svarar programmet 2.66667 om användaren anger 8. Detta resultat är betydligt bättre än det förra, vilket visar på den stora skillnaden mellan att skriva 3 och 3.0.
 
© Stockholms Stad 2001