AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

"Fehlerhafte" bei Prozentrechnung auf 100%

Ein Thema von rhodan · begonnen am 28. Apr 2014 · letzter Beitrag vom 29. Apr 2014
Antwort Antwort
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#1

"Fehlerhafte" bei Prozentrechnung auf 100%

  Alt 28. Apr 2014, 23:29
Hallo!

ich habe ein kleines berechnunsproblem..

ich habe ein Monats-Umsatz-ziel im editfeld gegeben, genauso wie den Aktuellen umsatz in einem weiteren editfeld.
Anhand eines weiteren feldes lasse ich nun anzeigen wieviel des Monats-Ziels schon erreicht wurden.
dies mache ich mit folgender formel:

prozent.text:= FloatToStr((StrToFloat(Umsatz.Text) / StrToFloat(monatsziel.Text)) *100); das problem ist das bei einem monatsziel von 20700 schon bei 20690 die 100% angezeigt werden..

ich übergebe das ergebnis der rechnung an ein weiteres editfeld wo die kommastellen weggestrichen werden und das ergebnis dann anhand einer progressbar angezeigt wird:

Delphi-Quellcode:
procedure TForm2.prozentChange(Sender: TObject);
var
zahl3:extended;
begin
zahl3:= strtofloat(prozent.Text);
 prozent.text:= floattostrf ( zahl3, ffFixed, 3, 1);
  prozentlabel.caption.Text:=prozent.Text;
 end;
ich schätze mal der hund liegt im prozent-editfeld begraben, denn wenn ich das im taschenrechner rechne kommt bei 20690 ne 99,95% raus...wieso wird da aufgerundet bzw wie verhindere ich das?

ich komme nicht dahinter wie ich das korrigieren kann das die 100% erst beim vollem Monatsziel angezeigt werden, meine mathekenntnisse sind da nicht so berauschend was formeln angeht, hat jemand nen tip?

ps: ich weiß es geht programmiertechnisch sicherlich schöner, lach!

prozent.text:= floattostrf ( zahl3, ffFixed, 3, 1);
ich weiß das ich hier auf eine stelle am ende runde, ich könnte das lösen indem ich auf 2 runde, ich frage mich nur ob es auch anders geht

danke!!

Geändert von rhodan (28. Apr 2014 um 23:36 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#2

AW: "Fehlerhafte" bei Prozentrechnung auf 100%

  Alt 28. Apr 2014, 23:44
Delphi-Quellcode:
  prozent.text:= FloatToStr((StrToFloat(monatsziel.Text) / StrToFloat(Umsatz.Text)) *100);
//..
Evtl. Monatsziel und Umsatz vertauscht?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: "Fehlerhafte" bei Prozentrechnung auf 100%

  Alt 28. Apr 2014, 23:56
Preisfrage:

99,95 auf eine Nachkommastelle gerundet (genau das macht floattostrf ( zahl3, ffFixed, 3, 1) ) ergibt was?
  1. 100,0
  2. 99,9
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

AW: "Fehlerhafte" bei Prozentrechnung auf 100%

  Alt 28. Apr 2014, 23:59
Wenn du nicht willst, daß aufgerundet wird, dann mußt du eben geziehlt abrunden.
Delphi-Referenz durchsuchenTrunc
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#5

AW: "Fehlerhafte" bei Prozentrechnung auf 100%

  Alt 29. Apr 2014, 00:01
Du weist im prozentChange dem prozent.Text den gerundeten Wert zu. Abgesehen davon, das dies einen erneuten Change-Event auslöst, wenn sich der Wert dabei ändert, steht dann im prozent-Feld der gerundete Wert. Du solltest den gerundeten Wert besser gleich dem Label zuweisen und im prozent-Feld den nicht-gerundeten Wert stehen lassen.

Grundsätzlich solltest du die Controls nicht als Zwischenspeicher für Rechenschritte mißbrauchen!
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: "Fehlerhafte" bei Prozentrechnung auf 100%

  Alt 29. Apr 2014, 00:07
Bei 5 wird in dem Fall nunmal aufgerundet (siehe Mathematisches Runden).

Wenn ich das richtig verstanden habe, willst du immer abrunden.
Das sollte gehen, indem du vor dem FloatToStrF das hier machst:

zahl3 := Trunc(zahl3 * 10) / 10;
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#7

AW: "Fehlerhafte" bei Prozentrechnung auf 100%

  Alt 29. Apr 2014, 00:58
danke für die konstruktive kritik euch allen, und stevie für die super lösung..klappt, 100% sind erst bei 20700 erreicht ^_^...ja ich weiß..sauberen code zu schreiben kommt nicht von heute auf morgen
  Mit Zitat antworten Zitat
Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#8

AW: "Fehlerhafte" bei Prozentrechnung auf 100%

  Alt 29. Apr 2014, 09:22
Sauberer Code kommt meistens am Anfang, unsauber wird er erst nach einiger Zeit. Das ganze geht dann selbst bei aller Liebe uns konsequenten Richtlinien auf Kurz oder Lang gegen den Baum. Kennt wer Hate driven development? Sowas hatte ich vor geraumer Zeit als ein "Neuer" Entwickler mit ins Boot geholt wurde und ich nach nem Review fast seine ganze Arbeit neu schreiben musste. Nur mal so als Beispiel: Threadkommunikation mit einer Booleanvariable absichern. Quasi: FWriteLock: Boolean. Gut das wäre an sich nicht so schlimm auszubügeln mit einem Event, aber das war nur eines von vielen Problemen.
Dennoch scheint die Formel unten falsch. Prozent sollte Umsatz/Monatsziel*100 sein, oder irre ich mich da?
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.736 Beiträge
 
Delphi 6 Enterprise
 
#9

AW: "Fehlerhafte" bei Prozentrechnung auf 100%

  Alt 29. Apr 2014, 10:02
Sauberer Code kommt meistens am Anfang, unsauber wird er erst nach einiger Zeit. Das ganze geht dann selbst bei aller Liebe uns konsequenten Richtlinien auf Kurz oder Lang gegen den Baum.
Ich glaube rhodan meinte das umgekehrt bzw. setzt früher an: Wenn man das Programmieren lernt und erstmal einfach drauf los "progt", dann programmiert man unsauber und erst mit der Zeit und mit hilfreichen Tips (z.B. hier aus dem Forum) und mit vielem Ärgern über den Sch... den man sich da vor 2 Jahren zusammengestümpert hat und wo man nun selber nicht mehr versteht, was man da eigentlich gemacht hat, lernt man saubereren Code zu schreiben.

Bei deiner Prozentformel mein ich auch, das diese richtig ist, wobei der TE das in #1 auch so geschrieben hat.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#10

AW: "Fehlerhafte" bei Prozentrechnung auf 100%

  Alt 29. Apr 2014, 17:52
yep jumpy so meinte ich das..

klar ist die formel falsch peter...hast recht. komisch das ich das da reingesetzt habe, bei mir im programm läuft sie richtig...umsatz/monatsziel*100.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz