Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   wie auf x nachkommastellen runden ? (https://www.delphipraxis.net/129444-wie-auf-x-nachkommastellen-runden.html)

khh 19. Feb 2009 10:52


wie auf x nachkommastellen runden ?
 
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

Klaus01 19. Feb 2009 10:54

Re: wie auf x nachkommastellen runden ?
 
Hallo,

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

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

Grüße
Klaus

Sven M. 19. Feb 2009 10:55

Re: wie auf x nachkommastellen runden ?
 
"FloatToStrF" ist dein Freund! ;)

Luckie 19. Feb 2009 10:57

Re: wie auf x nachkommastellen runden ?
 
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.

SteffenSchm 19. Feb 2009 11:08

Re: wie auf x nachkommastellen runden ?
 
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.

khh 19. Feb 2009 11:20

Re: wie auf x nachkommastellen runden ?
 
Zitat:

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

himitsu 19. Feb 2009 11:26

Re: wie auf x nachkommastellen runden ?
 
Zitat:

Zitat von SteffenSchm
In der Unit Math gibt es (zumindest in Delphi2009) die Funktion...

sowas kann man sich mathematisch auch selber herleiten :zwinker:

Delphi-Quellcode:
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 :angel2:

Gargoyl 19. Feb 2009 11:30

Re: wie auf x nachkommastellen runden ?
 
runden auf 2 Stellen nach dem Komma:
Delphi-Quellcode:
x:=round(x*100)/100;
runden auf n Stellen nach dem Komma:
Delphi-Quellcode:
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)

khh 19. Feb 2009 11:35

Re: wie auf x nachkommastellen runden ?
 
Zitat:

Zitat von Gargoyl
runden auf 2 Stellen nach dem Komma:
Delphi-Quellcode:
x:=round(x*100)/100;
runden auf n Stellen nach dem Komma:
Delphi-Quellcode:
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

himitsu 19. Feb 2009 11:38

Re: wie auf x nachkommastellen runden ?
 
:oops: Log10 war ja das Gegenteil von 10^n ... ach mist

[add]
IntPower bzw. Power wär das Richtige gewesen
siehe Beitrag #7


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:18 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