Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Keine minuswerte anzeigen bei Prozentrechnung (https://www.delphipraxis.net/180197-keine-minuswerte-anzeigen-bei-prozentrechnung.html)

rhodan 29. Apr 2014 18:28

Keine minuswerte anzeigen bei Prozentrechnung
 
mittlerweile ist es mir fast peinlich..dies ist das letzte mal, aber ich muss euch noch einmal mit meinen berechnungsformeln nerven...

Hiermit zeige ich an wieviel € noch eingenommen werden müssen, bis 40% des Monatsziels erreicht sind (um Provision zu bekommen).

Delphi-Quellcode:
provi1togo.Caption.Text :=FloatToStr((StrToFloat(monatsziel.Text) /100*40- StrToFloat(Umsatz.Text)));

das klappt auch so wie es soll, die formel stimmt. nur zeigt sie eben auch Minuswerte an sobald man über den 40% ist, ich möchte das wenn der wert <= 0 ist, nur 0 € angezeigt wird. hab schon ein bischen probiert aber ich kriege da nur murks raus und komische ergebnisse wie -1E etc :lol: :lol:

hat jemand ne idee? danach gibts keine neuen berechnungsformel threads mehr, ich schwöööörs :D

bitte um hilfe...

danke aus Hamburg

Popov 29. Apr 2014 18:35

AW: Keine minuswerte anzeigen bei Prozentrechnung
 
Mit der Funktion ABS() bekommst du den absoluten Wert.

Delphi hat noch weitere schöne Funktionen ;)

TRUNC gibt den Intergerwert raus.
ROUND ähnlich, rundet aber.
INT schneidet Nachommastellen ab
FRAC gibt nur die Nachkommastellen raus.
FLOOR rundet ab
usw.

rhodan 29. Apr 2014 18:54

AW: Keine minuswerte anzeigen bei Prozentrechnung
 
wenn ich hier FloattoStr in ABS ändere bekomme ich ne fehlermeldung
Delphi-Quellcode:
[DCC Fehler] Source.pas(259): E2010 Inkompatible Typen: 'string' und 'Extended'
:lol: den wald vor lauter bäumen mal wieder ?! :D

Popov 29. Apr 2014 19:09

AW: Keine minuswerte anzeigen bei Prozentrechnung
 
Du mußt den Wert mit ABS bearbeiten, also z. B. ABS(-42.1) ergibt 42.1, ABS(43.4) ergibt 43.4. In FloatToStr eingebaut würde das in etwa so aussehen:
Delphi-Quellcode:
FloatToStr(Abs(-42.1));

rhodan 29. Apr 2014 19:30

AW: Keine minuswerte anzeigen bei Prozentrechnung
 
hmmm...

Delphi-Quellcode:
provi1togo.Caption.Text :=FloatToStr(ABS(StrToFloat(monatsziel.Text) /100*40- StrToFloat(stand.Text)));

ergibt dann wenn ich die 40% um 100€ überschreite statt -100 wieder 100...aber wie reduziere ich den wert dauerhaft auf 0 € wenn er über 40% liegt? :S
sorry popov wenn ich dir alles aus der nase saugen muss :( :(

Lemmy 29. Apr 2014 19:32

AW: Keine minuswerte anzeigen bei Prozentrechnung
 
Hi

Delphi-Quellcode:
  var Differenz: Currency;
  ....

  Differenz := StrToFloat(monatsziel.Text) /100*40- StrToFloat(Umsatz.Text);
  provi1togo.Caption.Text := FloatToStrF(IfThen(Differenz<0, 0, Differenz), ffCurrency, 18,2);
//Alternativ
  if Differenz<0 then
    Differenz := 0;
  provi1togo.Caption.Text := FloatToStrF(Differenz, ffCurrency, 18,2);

Nachtrag: Wegen deinem anderen Post in dem Du uns erklärst, dass dein Source nicht besonders gut ist... Entschuldige dich nicht dafür - mach ihn besser! Wenn Du Tipps brauchst, dann schick mir ne PN....

himitsu 29. Apr 2014 19:33

AW: Keine minuswerte anzeigen bei Prozentrechnung
 
Außerdem würde ich noch auf die OH hinweisen.

Und über die Codevervollständigung kommt man auch eine kleine Übersicht, was sich in so mancher Unit versteckt.

Vorallem die Units SysUtils und vorallem Math könnten für dich interessant sein.

PS: Falls dir langweilig ist und du einfach mal massig Rechenoperationen studieren willst:
http://www.delphipraxis.net/123215-p...umwandeln.html

rhodan 29. Apr 2014 19:47

AW: Keine minuswerte anzeigen bei Prozentrechnung
 
lemmy... :shock: :shock:

bitte erklär mir das, ich will die magic verstehen..

Delphi-Quellcode:
  Differenz := StrToFloat(monatsziel.Text) /100*40- StrToFloat(Umsatz.Text);
  provi1togo.Caption.Text := FloatToStrF(IfThen(Differenz<0, 0, Differenz), ffCurrency, 18,2);

funktioniert wie ein charm...perfekt...und wieso wird sogar das € zeichen hinter dem betrag angezeigt?? ich kann das aus dem code nicht rauslesen, liegt das am dem currency? das funktioniert 1A..


Delphi-Quellcode:
  if Differenz<0 then
    Differenz := 0;
  provi1togo.Caption.Text := FloatToStrF(Differenz, ffCurrency, 18,2);

scheint etwas ungenauer zu sein, zumindest wird mir bei einem monatsziel von 20000 (40%=8000€) bei 7999 auch 0€ to go angezeigt...aber die erste variante ist genial...erklärt mir bitte wie das funktioniert...was ist dieses currency? ist das für das eurozeichen verantwortlich?

ich liebe momente wie diese wenn ich auf dinge stosse (durch hilfe) die ich nicht verstehe und die genau das tun was ich haben will...wie funktioniert das??? :lol:

ps: und was ist das 18,2 am ende??? 2 ist wohl die kommastelle aber das 18 ist mir ein rätsel

Sir Rufo 29. Apr 2014 19:52

AW: Keine minuswerte anzeigen bei Prozentrechnung
 
Warum wirfst du bei solchen Fragen "Wo kommt denn das €-Zeichen her?" nicht einfach mal einen Blick in die Online-Hilfe?
  • Können doch andere machen
  • Was ist eine Online-Hilfe
  • Hilfe, was will der von mir
  • Ich kann gar nicht lesen
Delphi-Referenz durchsuchenFloatToStrF und Delphi-Referenz durchsuchenTFloatFormat

Lemmy 29. Apr 2014 19:57

AW: Keine minuswerte anzeigen bei Prozentrechnung
 
Zitat:

Zitat von rhodan (Beitrag 1257434)
lemmy... :shock: :shock:

bitte erklär mir das, ich will die magic verstehen..

F1 ist dein Freund...

Zitat:

Zitat von rhodan (Beitrag 1257434)
scheint etwas ungenauer zu sein, zumindest wird mir bei einem monatsziel von 20000 (40%=8000€) bei 7999 auch 0€ to go angezeigt...aber die erste variante ist genial...erklärt mir bitte wie das funktioniert...was ist dieses currency? ist das für das eurozeichen verantwortlich?

Dann stelle alles auf Currency um (StrToCur usw.) - funktionell sind beide identisch - ich vermute hier ne Rundungsungenauigkeit von Double/Float. Deshalb Berechnungen mit Geldbeträgen besser mit Currency machen (wenn 4 Nachkommastellen ausreichen)

Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:29 Uhr.
Seite 1 von 3  1 23      

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