webForumDet fria alternativet

Procentuträkning Java

16 svar · 1 498 visningar · startad av rikard81

rikard81Medlem sedan mars 2007311 inlägg
#1

Håller på och lär mig java och har hittat några bra övningar på nätet. I en uppgift står det "Variabeln rabatt till 5." och sedan att man ska föra in en summa över 10 i en dialogruta och sedan ska rabatten dra på summan man fört in. Kanske svårt utan kod, men hur i hela friden ska man räkna ut rabatten om variabeln "rabatt" har värdet 5 och att du inte får ändra detta värde?. Man får alltså inte ändra värdet till te.x 0,95 och använda flyttande tal. värdet ska vara 5 alltså.

om man te.x deklarerar:

int rabatt;
double totpris;

..och totpris fås från indata via dialogrutan, där man skriver in summan.

Hur ska man då skriva för att dra rabatten från totpris när värdet är 5.

int totpris=totpris*rabatt;

Men då stämmer det ju inte? nån med tips.

GeinMedlem sedan sep. 20005 700 inlägg
#2
prisEfterRabatt = totpris * (100-rabatt)/100;
tydalMedlem sedan juni 20034 013 inlägg
#3

Du behöver inte mellanlagra allt i variabler. Hur tänker du själv om du har 5 och ska göra om det till en procentsats och räkna av det som rabatt? Det är bara att du skriver så...

rikard81Medlem sedan mars 2007311 inlägg
#4

Variabeln rabatt måste vara en heltalsvariabel och ha värdet 5. Det står ju "rabatt till 5." Detta är ju trots allt en uppgift jag hittade på nätet. På ett forum.

rikard81Medlem sedan mars 2007311 inlägg
#5

Denna uppgift har jag löst förutom rabatten som även skribenten tycks ha problem med.

tydalMedlem sedan juni 20034 013 inlägg
#6

Ser inga konstigheter med uppgiften. Mitt resonemang och Geins kod stämmer.

I en heltalsvariabel så kan man bara lagra heltal, men det går ju alldeles utmärkt att i uträkningar få fram flyttal, men då måste du ha en flyttalsvariabel att lagra resultatet i, men det har du ju i form av totpris, så det är ju lugnt.

rikard81Medlem sedan mars 2007311 inlägg
#7

Okey. Då var det jag som missuppfattade uppgiften när jag läste den. Självklart är det onödigt att mellanlagra värden i fler variabler än nödvändigt exempelvis rabatt=5; Men trodde det var tvunget att skriva så. Då blir det ju bra mycket enklare genom att räkna ut allting i en variabel och ha variabelns namn döpt till rabatt.

rikard81Medlem sedan mars 2007311 inlägg
#8

Vill förstå bara Gein. Men hur får du det där till 5 %?

tydalMedlem sedan juni 20034 013 inlägg
#9

Procent betyder hundradelar. 5% är lika med 5 delat med 100, alltså 5/100 (eller rabatt/100).

rikard81Medlem sedan mars 2007311 inlägg
#10

Gein skrev:

prisEfterRabatt = totpris * (100-rabatt)/100;

Går det att skriva detta på något annat sätt. rabatt=totpris*0.95; Men då funkar inte int. och int måste vara med.

rikard81Medlem sedan mars 2007311 inlägg
#11

Gein skrev:

prisEfterRabatt = totpris * (100-rabatt)/100;

Jag får error när jag skriver som ovan.

ercizMedlem sedan maj 20011 826 inlägg
#12

rikard81 skrev:

Jag får error när jag skriver som ovan.

Det blir lättare att hjälpa dig och du skriver vilket felmeddelande du får.

rikard81Medlem sedan mars 2007311 inlägg
#13

Fick det att funka. Tack allesammans för att ni orkar med en nybörjare.

tydalMedlem sedan juni 20034 013 inlägg
#14

Du har glömt ; efter "int rabatt".

rikard81Medlem sedan mars 2007311 inlägg
#15

Såg det tidigare. Det är fixat. tack

aronMedlem sedan mars 2004485 inlägg
#16

tydal skrev:

I en heltalsvariabel så kan man bara lagra heltal, men det går ju alldeles utmärkt att i uträkningar få fram flyttal, men då måste du ha en flyttalsvariabel att lagra resultatet i, men det har du ju i form av totpris, så det är ju lugnt.

Vist görs det automatiska typomvandlingar i Java när man blandar typer. Om man försöker lagra en double i en int klagar kompilatorn ("possible loss of precision"). Så det är tack vara att totpris i koden Gain skrev är en double som gör att typomvandlingen blir rätt och divisionen blir en flyttals division och inte en heltals division.

Kan koden bli mer effektiv om man har rabatt som double från början så man slipper den typomvandlingen?

rikard81Medlem sedan mars 2007311 inlägg
#17

Rabatt måste vara int och inte double i övningen. Hade ju vart smidigare med double så slipper man omvandla. Men vad kan man göra när det måste vara en heltalsvariabel mer än att typomvandla.

135 ms totalt · 3 externa anrop · v20260731065814-full.30151723
131 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)