Entwickler-Ecke

Sonstiges (Delphi) - Ergebnisse kaufm. Runden


boebel - Mo 20.01.03 15:08
Titel: Ergebnisse kaufm. Runden
Hi alle,

Ich kenn mich nicht gut aus mit Delphi, darum weiss ich auch nicht in welche Sparte ich da posten soll. :oops:

Ich habe aber mit Mühe und Not ein kleines Programm "auf die Beine gestellt", dass eine Währung mit Wechselkurs umrechnet, die MWSt. von 7.6% (Schweiz ;-)) und 10% Marge dazurechnet. Das ganze sieht ca. so aus:

Quelltext
1:
Label1.caption:=floattostr((((strtofloat(Einkaufspreis.text)* strtofloat(Wechselkurs.text))*1.10)*107.6)/100);                    


Soweit, so gut! Ich versuchte das Ergebnis auf zwei Stellen genau zu Runden, leider klappt das nicht so wie ich will.

Hat jemand eine Lösung für mich?


Klabautermann - Mo 20.01.03 15:12

Hallo,

guck mal in FAQ [http://www.delphi-forum.de/viewtopic.php?t=3134] ;).

Gruß
Klabautermann


boebel - Mo 20.01.03 15:32

danke, hab ich bereits gesehen. ich habe diese function eingefügt, sowie die unit "math" in die uses-klausel geschrieben.

Leider weiss ich nicht genau, wie ich diese function "Runden" in den Code einfügen soll


Quelltext
1:
Label1.caption:=floattostr((((strtofloat(Einkaufspreis.text)* strtofloat(Wechselkurs.text))*1.10)*107.6)/100);                    


Klabautermann - Mo 20.01.03 15:51

Hallo,
boebel hat folgendes geschrieben:
Leider weiss ich nicht genau, wie ich diese function "Runden" in den Code einfügen soll

Quelltext
1:
Label1.caption:=floattostr((((strtofloat(Einkaufspreis.text)* strtofloat(Wechselkurs.text))*1.10)*107.6)/100);                    

Da du das ergebnis Runden willst, müsste das so aussehen:

Quelltext
1:
Label1.caption:=floattostr(Runden((((strtofloat(Einkaufspreis.text)* strtofloat(Wechselkurs.text))*1.10)*107.6)/100, 2));                    


Gruß
Klabautermann


Delete - Mo 20.01.03 16:02

Kuck dir auch in der Hilfe mal Format an.


Klabautermann - Mo 20.01.03 16:21

Hallo,
Luckie hat folgendes geschrieben:
Kuck dir auch in der Hilfe mal Format an.

Wobei format meines Wissens nach Abschneidet und nicht Rundet.

Gruß
Klabautermann


boebel - Mo 20.01.03 16:45

sorry, mit dem format funktioniert das ganze nicht richtig.

Danke, Klabautermann!

Mit der der function "Runden" und deinem Code funktionierts! ;-)


Ist es möglich, die zweite Stelle nach dem Komma auf 0 oder 5 zu runden?

Beispiel:
12.49 oder weniger wird abegrundet auf 12.0
12.5 wird nicht verändert: 12.5
12.51 oder mehr wird aufgerundet: 13

oder wäre das zu aufwendig?


Delete - Mo 20.01.03 17:00

Klabautermann hat folgendes geschrieben:
Hallo,
Luckie hat folgendes geschrieben:
Kuck dir auch in der Hilfe mal Format an.

Wobei format meines Wissens nach Abschneidet und nicht Rundet.

Gruß
Klabautermann


Quelltext
1:
2:
3:
4:
5:
6:
7:
var
  s : String;
begin
  s := Format('%0.2f', [125.562]);
  ShowMessage(s);
  s := Format('%0.2f', [125.567]);
  ShowMessage(s);

Ergebnis:
1. 125,56
2. 125,57

q.e.d.


derDoc - Mo 20.01.03 17:38

Nur rein aus Interesse, wäre RoundTo nicht die bessere Wahl?

Dann wäre der Code der folgende:

Quelltext
1:
Label1.Caption := FloatToStr(RoundTo((((StrToFloat(Einkaufspreis.Text)* StrToFloat(Wechselkurs.Text))*1.10)*107.6)/100, -2));                    


Das hat doch eigentlich den selben Effekt und benötigt auch nur die Unit Math.


Delete - Mo 20.01.03 17:40

Ich würde Format vorziehen: Keine extra Unit einbinden, und mann kann es besser formatieren, mit tausender Trennzeichen usw.


boebel - Di 21.01.03 13:28

Danke an alle die hier teilgenommen, und mir somit sehr geholfen haben.

+ ein besonderes Dankeschön an Klabautermann, der zeitlich gesehen, sehr schnell Lösungen angeboten hatte :D

gruss boebel