AGB  ·  Datenschutz  ·  Impressum  







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

Max. 3 Nachkommastellen

Ein Thema von Carsten1234 · begonnen am 15. Jun 2009 · letzter Beitrag vom 16. Jun 2009
Antwort Antwort
Seite 2 von 2     12   
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#11

Re: Max. 3 Nachkommastellen

  Alt 15. Jun 2009, 11:23
Hallo Carsten,

hast du den Einzeiler aus Beitrag #5 einmal getestet?

Gruß Hawkeye
  Mit Zitat antworten Zitat
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#12

Re: Max. 3 Nachkommastellen

  Alt 15. Jun 2009, 11:26
Zitat von Carsten1234:
Hallo zusammen,

bzgl. Runden mit 3, 4, 5 Nachkommastellen mit Hilfe von Format oder FormatFloatToStrF gibt es ja einiges zu lesen, doch zu meinem Problemchen im Betreff habe ich noch keine gute Lösung gefunden.
Ich möchte nämlich, dass ein Float max. 3 Nachkommastellen hat, optional aber auch weniger, wenn der Anwender weniger Nachkommastellen eingibt.
Bsp.:
1500 => 1500
100,01 => 100,01
0,3972 => 0,397
0,8767 => 0,877

Wie kann ich das denn möglichst einfach erreichen?

Dank vorab und Gruß, Carsten
Vielleicht verstehe ich das Problem nicht richtig, aber ist es nicht am einfachsten, die Format-Routine entsprechend der Anwendervorgabe aufzurufen:

Delphi-Quellcode:
case Vorgabe of
  1: Result:= Format('%0.1f', [AValue]);
  2: Result:= Format('%0.2f', [AValue]);
  3: Result:= Format('%0.3f', [AValue]);
end;
Alternativ könnte natürlich auch der Formatstring '%0.3f' entsprechend der Anwendervorgabe aufgebaut werden.
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#13

Re: Max. 3 Nachkommastellen

  Alt 15. Jun 2009, 11:41
HI,

also ich bevorzuge auch die Methode mit den Formatstrings.
Beispiel:
Delphi-Quellcode:
function Runden(Zahl: Extended; Nachkommastellen: Byte): string;
var
  NachStr: String;
begin
  Nachstr := IntToStr(Nachkommastellen);
  Result := Format('%1.' + Nachstr + 'f', [Zahl]);
end;
Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Max. 3 Nachkommastellen

  Alt 15. Jun 2009, 11:52
@rollstuhlfahrer ... schau dir mal das * in den Format-Settings an

siehe mein Beitrag > http://www.delphipraxis.net/internal...048785#1048785
oder siehe Delphi-Referenz durchsuchenFormat

dakannst du dir das IntToStr und das etwas unübersichtliche Zusammensetzen sparen.

@guidok:
hier wird verlangt, daß der String maximal 3 Nachkommastellen hat ... aber Format selber kennt da nur die Definition "genau 3 Stellen"
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#15

Re: Max. 3 Nachkommastellen

  Alt 15. Jun 2009, 12:21
Hallo,

hab auch einen Einzeiler:
sErg := FloatToStr(StrToFloat(Format('%.3f',[e])));
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#16

Re: Max. 3 Nachkommastellen

  Alt 15. Jun 2009, 12:25
Zitat von himitsu:
@guidok:
hier wird verlangt, daß der String maximal 3 Nachkommastellen hat ... aber Format selber kennt da nur die Definition "genau 3 Stellen"
Zitat:
..optional aber auch weniger, wenn der Anwender weniger Nachkommastellen eingibt.
Ok, falsch interpretiert. Das klingt so, als ob der Anwender wählen kann wieviele Nachkommastellen er möchte, aber als Maximum (oder Vorgabe) drei eingestellt werden kann.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Max. 3 Nachkommastellen

  Alt 15. Jun 2009, 12:38
@Lannes:
sErg := FloatToStr(Round(e * Power(10, n)) / Power(10, n)); aber bei all diesen Varianten ... es geht so nicht mehr, sobald dir die internen Rundungsfehler der Fließkommatypen einen Strich durch die Rechnung machen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Carsten1234

Registriert seit: 9. Apr 2008
Ort: Vechelde
178 Beiträge
 
Delphi 8 Professional
 
#18

Re: Max. 3 Nachkommastellen

  Alt 16. Jun 2009, 06:37
Hallo,

Zitat von guidok:
Vielleicht verstehe ich das Problem nicht richtig, aber ist es nicht am einfachsten, die Format-Routine entsprechend der Anwendervorgabe aufzurufen:
es gibt da keine Anwendervorgaben, wo er sagen könnte, ich will 1, 2 oder 3 Nachkommastellen. Die einzige Vorgabe (Beschränkung seitens der Anwendung) ist max. 3 Nachkommastellen in einem TEdit.
Vorher hatte ich beim OnExit-Event immer auf 3 Nachkommastellen "aufgrechnet". Wenn Anwender also 10,1 eingab, hatte ich daraus dann automatisch 10,100 gemacht, doch das fand man eine Etage höher nicht schön (war aber für mich einfacher, weil ich exakt mit dem Wert intern weiter rechnen musste).

Gruß, Carsten
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 14:22 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