Gå til innhold

Anbefalte innlegg

Skrevet

Hvis jeg deler to int'er på hverandre får jeg da kun en int som svar, eller kan jeg få det til å bli en double?

Jeg har to inter, sum og antall, som jeg vil finne gjennomsnittet av og skrive det ut med desimaler. Jeg har prøvd og lagre det som en double, men får bare ut en int. Er det noen annen måte å gjøre det på?

 

int sum = 7;

int antall = 3;

double gjsnitt = sum/antall;

 

cout << gjsnitt; //blir 2.00 hos meg

Videoannonse
Annonse
Skrevet (endret)

Jeg kan ikke c++ så godt, men dette er ganske logisk, sjøl for meg. Bare sett sum og antall til double?

#include <iostream>

using namespace std;

int main()
{
double sum = 7;
double antall = 3;
double gjsnitt = sum/antall;

cout << gjsnitt << endl; //blir 2.33 hos meg
system("pause");
}

Endret av dabear
Skrevet

Du påstår at DET er formelen for å regne ut gjennomsnitt?

 

gjsnitt = verdier_tilsammen / antall_verdier;

 

Ex:

 

int i, j;
double snitt;
i = 5;
j = 70;
snitt = (i + j) / 2;

Skrevet (endret)
Du påstår at DET er formelen for å regne ut gjennomsnitt?

 

gjsnitt = verdier_tilsammen / antall_verdier;

 

Ex:

 

int i, j;
double snitt;
i = 5;
j = 70;
snitt = (i + j) / 2;

eh? har du et poeng kriztoffz0r? du vet selvfølgelig at sum = verdier_til_sammen og at antall = antall_verdier? ville du bare skrive det samme med andre navn eller hvor er det du vil hen?

Endret av saboi
Skrevet (endret)

nei sorry, jeg misforstod litt :!: (les: leste ikke skikkelig)

 

EDIT: Jeg oppfattet det som fex at han delte var1 på var 2 og trodde gjennomsnittet skulle komme ut av det ( (var1 + var2) / 2 = gjsnitt er jo riktig)

Endret av kr1570ffz0r
Skrevet

Såvidt jeg har forstått det så blir int/int = int grunnen er at den regner utrykket som en int. F.eks 7/2=3 (egentlig skal det være 3,5)

7/2.0 derimot = 3,5

Skrevet (endret)

int/int kan godt bli konvertert til en double.

eks.

int a = 20;

int b = 10;

double kvotient = a/b;

 

kvotient == 2.0;

 

Edit: Ah!! Dreit meg ut...

Sånn, nå står det kvotient! :)

Endret av zirener
Skrevet (endret)
int/int kan godt bli konvertert til en double.

eks.

int a = 20;

int b = 10;

double kvontient = a/b;

 

kvontient == 2.0;

jeg skjønner ikke helt hva du mener med dette?

vi vet at det går ann å caste en int til en double, hva så?

forresten heter det kvotient ikke kvontient :)

Endret av saboi
Skrevet (endret)

Uttrykket a/b der a og b er av typen int returnerer en int, zirener. Hvis a er 10 og b 3 blir altså noe forkortet.

 

Så det som skjer er at svaret, som i utgangspunktet er galt og av typen int, blir castet til double.

 

Edit:

Kan si det slik at divisjonen blir utført først, der det opprettes et "temporary objekt" av typen int der svaret lagres i. Så "assignes" svaret til variabelen.

 

Edit2:

Det er forresten lurt å bruke en C++'ish cast fremfor en C'ish:

 

double kvotient = static_cast<double>(a) / static_cast<double>(b);

 

Slå opp om du/noen lurer på hvorfor.

Endret av søppel
Skrevet
Backslash er det samme som integral division

 

int a = 100;

int b = 20;

int c = a \ b;

hæ?

hvor mye syre har du spist i dag?

Skrevet (endret)

hmmm, det står så i MSDN...

 

Kanskje det er for C#

 

__asm

{

mov eax, a

idiv eax, b

mov c, eax

}

 

skullie bli det samme som det jeg skrev.

Endret av GeirGrusom
Skrevet

hæ?

kan du forklare meg hva du snakker om?

hvor på msdn står det at \ er integral divisjon? mente du egentlig / ?

__asm

{

mov eax, a

idiv eax, b

mov c, eax

}

 

skullie bli det samme som det jeg skrev.

 

??? er ikke det der det samme som en vanlig divisjon?

  • 3 uker senere...
Skrevet
double kvotient = static_cast<double>(a) / static_cast<double>(b);

Det skulle være nok å caste en av verdiene for å returnere en double.

 

Slik:

double kvotient = a / static_cast<double>(b);

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...