AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen FreePascal wie auf x nachkommastellen runden ?
Thema durchsuchen
Ansicht
Themen-Optionen

wie auf x nachkommastellen runden ?

Ein Thema von khh · begonnen am 19. Feb 2009 · letzter Beitrag vom 19. Feb 2009
Antwort Antwort
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#1

wie auf x nachkommastellen runden ?

  Alt 19. Feb 2009, 10:52
Hallo zusammen,
ich habe einen Wert den ich in einen String konvertiere: currtostr(preis);

wie kann ich die Nachkommastellen im String begrenzen?
Standardmässig hab ich 14 Nachkommastellen


Danke Gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: wie auf x nachkommastellen runden ?

  Alt 19. Feb 2009, 10:54
Hallo,

schau Dir in der Delphi Hilfe mal die format Funktion an.

[edit] allerdings rundet format nicht sonder schneidet ab [/edit]

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Sven M.

Registriert seit: 21. Okt 2006
Ort: Halle/Saale
106 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: wie auf x nachkommastellen runden ?

  Alt 19. Feb 2009, 10:55
"FloatToStrF" ist dein Freund!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: wie auf x nachkommastellen runden ?

  Alt 19. Feb 2009, 10:57
Also wenn der Datentyp von Typ Currency ist, sollte die Funktion currtostr auch auf zwei Stellen nach dem Komma runden. Ansonsten gibt es da noch Delphi-Referenz durchsuchenRound und Delphi-Referenz durchsuchenFloatToStrF.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
SteffenSchm

Registriert seit: 2. Nov 2004
Ort: Herzogenaurach
84 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: wie auf x nachkommastellen runden ?

  Alt 19. Feb 2009, 11:08
In der Unit Math gibt es (zumindest in Delphi2009) die Funktion

Delphi-Quellcode:
function RoundTo(const AValue: Extended;
                 const ADigit: TRoundToEXRangeExtended): Extended;

Ich glaube diese Funktion macht exakt das was Du suchst.
Steffen
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#6

Re: wie auf x nachkommastellen runden ?

  Alt 19. Feb 2009, 11:20
Zitat von SteffenSchm:
In der Unit Math gibt es (zumindest in Delphi2009) die Funktion

Delphi-Quellcode:
function RoundTo(const AValue: Extended;
                 const ADigit: TRoundToEXRangeExtended): Extended;

Ich glaube diese Funktion macht exakt das was Du suchst.
ich danke euch, leider gibts die Funtion in Lazarus nicht

alternativ könnte man vieleicht das editfeld formatieren, falls das irgendwie geht ohne gleich Tmaskedit zu verwenden.


Gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: wie auf x nachkommastellen runden ?

  Alt 19. Feb 2009, 11:26
Zitat von SteffenSchm:
In der Unit Math gibt es (zumindest in Delphi2009) die Funktion...
sowas kann man sich mathematisch auch selber herleiten

MitZweiNachkommastellen := Round(R * 100) / 100; für 4 Nachkommastellen wäre es 10000, also 4 Nullen usw.
und über 'nen Logarithmus kann man sich das ganze auch noch aufbauen
Delphi-Quellcode:
gerundet := Round(R * IntPower(10, Nachkommastellen)) / IntPower(10, Nachkommastellen);

// bzw.

temp := IntPower(10, Nachkommastellen);
gerundet := Round(R * temp) / temp;
aber in diesem Fall reicht ihm wohl eine der oben schon genannten StringFunktionen
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Gargoyl

Registriert seit: 11. Mär 2007
69 Beiträge
 
#8

Re: wie auf x nachkommastellen runden ?

  Alt 19. Feb 2009, 11:30
runden auf 2 Stellen nach dem Komma:
x:=round(x*100)/100; runden auf n Stellen nach dem Komma:
x:=round(x*(10^n))/(10^n); (x sollte vom Typ float o.Ä. sein und nicht integer)

mfg


Edit: Ups himitsu war schneller. (nur das mit dem Log10 versteh ich nicht, hab auch gerade kein Delphi installiert)
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.903 Beiträge
 
FreePascal / Lazarus
 
#9

Re: wie auf x nachkommastellen runden ?

  Alt 19. Feb 2009, 11:35
Zitat von Gargoyl:
runden auf 2 Stellen nach dem Komma:
x:=round(x*100)/100; runden auf n Stellen nach dem Komma:
x:=round(x*(10^n))/(10^n); (x sollte vom Typ float o.Ä. sein und nicht integer)

mfg


Edit: Ups himitsu war schneller. (nur das mit dem Log10 versteh ich nicht, hab auch gerade kein Delphi installiert)

ich danke euch

gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: wie auf x nachkommastellen runden ?

  Alt 19. Feb 2009, 11:38
Log10 war ja das Gegenteil von 10^n ... ach mist

[add]
IntPower bzw. Power wär das Richtige gewesen
siehe Beitrag #7
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 23: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