2021-11-13, 18:08
  #1
Medlem
Kod:
double doubleNumber;

double answer = doubleNumber % 1;

ERROR : answer must have ingrate or unscoped enum value?

Vad r fel?
__________________
Senast redigerad av bosscs2 2021-11-13 kl. 18:11.
Citera
2021-11-13, 19:33
  #2
Medlem
ingen som har samma funderingar en lrdagskvll?
Citera
2021-11-13, 22:08
  #3
Moderator
Pontiac-Garages avatar
Det underlttar om du skriver vilket sprk du kodar i.

Men gissar p C/C++. I s fall r svaret att procenttecknet representerar en kongruensberkning, dr du frsker att anvnda en variabel av typen double som operand (nr du istller behver ett heltal). Eftersom kongruensberkning enbart fokuserar p heltal (d du avser att rkna ut rest vid divisionsoperationer) kan du inte anvnda en sdan berkning p vrden av typen double.
Citera
2021-11-14, 10:35
  #4
Medlem
Goto10s avatar
Citat:
Ursprungligen postat av bosscs2
Kod:
double doubleNumber;

double answer = doubleNumber % 1;

ERROR : answer must have ingrate or unscoped enum value?

Vad r fel?

Modulusoperatorn (%) gr inte att anvnda p flyttal (float eller double), bara p heltal.
Fr flyttal behver du anvnda std::fmod. Se https://en.cppreference.com/w/cpp/numeric/math/fmod
Citera
2021-11-14, 12:10
  #5
Medlem
hogerspokets avatar
Citat:
Ursprungligen postat av bosscs2
Kod:
double doubleNumber;

double answer = doubleNumber % 1;

ERROR : answer must have ingrate or unscoped enum value?

Vad r fel?

Kod:
double doubleNumber;

int answer =  (int) doubleNumber % 1;

eller mjligen

Kod:
double doubleNumber;

int answer = ( (int) doubleNumber) % 1;
Citera
2021-11-14, 13:19
  #6
Medlem
Kod:
int answer = 0;
Modulo 1 r ju en tmligen meningsls operation.
Citera
2021-11-14, 15:27
  #7
Medlem
Neksnors avatar
Har rubrikens enums egentligen ngot med trdstarten att gra?
Citera
2021-11-14, 20:10
  #8
Medlem
hogerspokets avatar
Citat:
Ursprungligen postat av Neksnor
Har rubrikens enums egentligen ngot med trdstarten att gra?

Tveksamt. Verkar som TS tror att enum och int r utbytbara storheter. Men jag r inte helt sker.
Citera
2021-11-14, 23:07
  #9
Medlem
Anvnd fmod om du ska gra modulus p flyttal.
Citera
2021-11-19, 02:57
  #10
Medlem
Citat:
Ursprungligen postat av bosscs2
Kod:
double doubleNumber;

double answer = doubleNumber % 1;

ERROR : answer must have ingrate or unscoped enum value?

Vad r fel?


Urskta fr detta svar, har det just nu inte aktuellt, eftersom jag inte kommer t
ngon del av C++ standarden p denna sla uppkoppling hr, s mitt minne r lite blurrigt:

Det str att answer mste vara deklarerad som en integer antar jag att kompilatorn menar.
Enum r typ en egen primitiv datatyp, och den ska definitionsmssigt vara upprkningsbar.
En integer r upprkningsbar, men det r inte en float (eller double).
ven om du har ett knt float number s vet du inte nsta float i serien,
allts kan den inte bli upprkningsbar.

I princip kan man ta reda p nsta float i serien men den beror p hur stor upplsning din float-typ har,
tex float eller double eller long double.

I vissa system och sammanhang kallas upplsningen ibland fr epsilon, ibland fr delta.
Olika numeriska bibliotek har olika definitioner p dessa.

Det menas dock att fr floats generellt s kan de inte vara upprkningsbara eftersom nsta vrde i serien r infinitesimalt (ondligt) liten, och kan inte berknas.

Och dvs fr enums, allts upprkningsbara datatyper s ska operatorn > och < returnera en boolean, sant eller falskt, true or false.

Men det kan finnas ldre kod dr man anvnder enums p andra stt.
Tex fr frger, tex rd, grn och bl.
Men tex uttrycket rd > grn saknar allts mening. Drfr r det principiellt fel att stta en frg som en enum.
Gissningsvis finns det nd gott om gammal kod dr tex egenskapen frg r en enum.
Anvnds den p rtt stt s kan det vl fungera nd.

Att anvnda modulus-operatorn % i ngot uttryck likt
% 1 ger vl alltid svaret noll 0, eftersom resten vid division med 1 alltid blir 0 som svar.
% 2 ger alltid 0, eller 1 som svar.
% 3 ger alltid 0, 1 eller 2 som svar.

Om jag nu minns rtt s kan ven operatorn % overloadas, jag har dock lite svrt att se vitsen
fr det, men fr tex egna numeriska datatyper s kan den ju ha en tnkbar anvndning.

En primitiv datatyp har jag fr mig r en datatyp som inte kan overloadas,
den kan inte omdefinieras.
I och fr sig finns det skert kod dr tex integer omdefinierats till 128 bits integers,men det r inte normalt att gra det. Det rekommenderas istllet att man skriver int128,mest fr att nr nya programmerare tex ska skolas in p ett nytt projekt
s r det viktigt att komma ihg.
__________________
Senast redigerad av DrSvenne 2021-11-19 kl. 03:08.
Citera
2021-11-26, 22:34
  #11
Medlem
Citat:
Ursprungligen postat av Pontiac-Garage
Det underlttar om du skriver vilket sprk du kodar i.

Men gissar p C/C++. I s fall r svaret att procenttecknet representerar en kongruensberkning, dr du frsker att anvnda en variabel av typen double som operand (nr du istller behver ett heltal). Eftersom kongruensberkning enbart fokuserar p heltal (d du avser att rkna ut rest vid divisionsoperationer) kan du inte anvnda en sdan berkning p vrden av typen double.

... och det var svaret p min frga, case closed!
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in