Entwickler-Ecke

Sonstiges (Delphi) - Multiplikation mit Prozentzahlen


boebel - Do 20.03.08 01:25
Titel: Multiplikation mit Prozentzahlen
Hallo

Kann für folgendes Problem keine Lösung finden, vielleicht hat mir jemand einen Vorschlag?

Ich will mit folgender Funktion eine Zahl mit einer Prozentzahl multipliziern (EKKU * MWST => 10 * 7.6%)


Delphi-Quelltext
1:
2:
3:
4:
5:
function EKKUMWST_calc (EKKU, MWST:Real) : Real;
begin
result:=EKKU*MWST;
EKKUMWST:=result;
end;


Ich könnte ja in der Variable "MWST" auch einfach den Wert '107.6' zuweisen, dann funktionierts.

Jedoch soll der Anwender die MWST selber bestimmen können und der trägt dann nur z.B. '7.6' oder '19' ein.


Gibt es eine Möglichkeit direkt mit Prozentzahlen zu multiplizieren?

Oder muss ich das anders angehen?


Vielen Dank für eure Hilfe.


Sirke - Do 20.03.08 01:38

Eine Prozentzahl ist ja wie der Name sagt 1/100 ... folglich kann man einfach 1 + MWST / 100 rechnen und bekommt die richtigen Faktoren: Bsp. für 19 -> 1 + 19 / 100 = 1.19!


boebel - Fr 21.03.08 14:54

Hallo Sirke

Vielen Dank für deine Hilfe. jetzt wo du es sagst, erinnere ich mich an die Schulzeit. Da hatte mein Taschenrechner noch keine "%-Taste". Da musste ich das ja auch immer mit /100 rechnen.


Falls das mal jemand interessiert, so funktionierts:


Delphi-Quelltext
1:
2:
3:
4:
5:
function EKKUMWST_calc (EKKU, MWST:Real) : Real;
begin
result:=EKKU+(EKKU*MWST/100);
EKKUMWST:=result;
end;


Hidden - Fr 21.03.08 15:07

Hi,

Bei der Gelegenheit kannst du dich auch direkt mal mit ausklammern beschäftigen, schaden wirds bestimmt nicht:

Delphi-Quelltext
1:
2:
3:
4:
5:
  function EKKUMWST_calc (EKKU, MWST:Real) : Real;
  begin
    result := EKKU * (1 + MWST/100);
    EKKUMWST := result;  //ich weiß nicht, ob du damit den Namen der Funktion meinst, wenn ja: kannst du weglassen, ist identisch mit result
  end;


mfG,


boebel - Fr 21.03.08 15:17

Hi Hidden

Vielen Dank für den Tipp. Ist bestimmt die vernünftigere Lösung :-)

EKKUMWST ist ne Variable die ich in der Unit definiert hat.

Rufe in einer Prozedur zuerst die Funktion "EKKMWST_calc" auf und danach schreibe ich das Ergebnis in ein Label.


Delphi-Quelltext
1:
2:
EKKUMWST_calc(EKKU,MWST);
Label1.Caption:=floattostr(EKKUMWST);


elundril - Fr 21.03.08 16:21

warum nicht gleich


Delphi-Quelltext
1:
Label1.Caption:=floattostr(EKKUMWST_calc(EKKU,MWST));                    


da sparst du dir eine variable und die funktion bekommt auch ihren sinn wieder. (weil ansonsten hättest du ja auch ne procedure nehmen können)

lg elundril