Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi RoundX erhalte immer nur eine Nachkommastelle (https://www.delphipraxis.net/130381-roundx-erhalte-immer-nur-eine-nachkommastelle.html)

capo 7. Mär 2009 14:30


RoundX erhalte immer nur eine Nachkommastelle
 
Ich möchte mit folgendem Code zwei Nackommastellen erhalten, klappt aber nicht erhlate immer nur eine. Seht ihr einen Fehler?
Gruss vom Capo

Delphi-Quellcode:
function RoundUp(X: Extended): Extended;
begin
  Result := Trunc(X) + Trunc(Frac(X) * 2);
end;


function RoundX(const Value: Extended; const nk: Integer): Extended;
var
  multi: Extended;
begin
  multi := IntPower(10, nk);
  Result := RoundUp(Value * multi) / multi;
end;

Delphi-Quellcode:
...
Summeausgabe := (floattostr(RoundX(Summe, 2)));
...

blink182 7. Mär 2009 14:44

Re: RoundX erhalte immer nur eine Nachkommastelle
 
wie wäre es mit der RoundTo-Funktion aus der Unit Math?
Delphi-Quellcode:
RoundTo(Summe,-2);
aber bei mir klappt dein code, nur da durch intpower ja so oder so die unit math einbinden musst.
kA welchen wert bei dir summe hat, vllt kommt dann sowas wie 4,10 raus und er schreibt 4,1 aber kA

capo 7. Mär 2009 14:49

Re: RoundX erhalte immer nur eine Nachkommastelle
 
Hallo,

danke aber anstatt 634,50 wird damit auch 634,5 angezeigt.
Delphi-Quellcode:
showmessage(floattostr(RoundTo(634.50 ,-2)))

jaenicke 7. Mär 2009 14:54

Re: RoundX erhalte immer nur eine Nachkommastelle
 
Wenn du einen so formatierten String haben willst, dann musst du Format benutzen. RoundTo usw. nimmt zwar die Nachkommastellen weg, aber das hat ja keinen Einfluss auf die folgende Umwandlung in einen String furch FloatToStr.

capo 7. Mär 2009 15:31

Re: RoundX erhalte immer nur eine Nachkommastelle
 
Ahhhh, mit Format habe ich noch nie was gemacht.
Habe da gerade etwas gefunden.
Wie müßte ich das anpassen?
Delphi-Quellcode:
Format('%6.0n', [wert]);

capo 7. Mär 2009 15:35

Re: RoundX erhalte immer nur eine Nachkommastelle
 
habs...
Delphi-Quellcode:
showmessage(Format('%s', ['634.50']));
Klappt aber in meinem Fall nicht:

Summeausgabe :=(Format('%s', [Summe]));
Zitat:

---------------------------
Project1
---------------------------
Format '%s' ungültig oder nicht kompatibel mit Argument.
---------------------------
OK
---------------------------
[EDIT so muss es sein]
Delphi-Quellcode:
 Summeausgabe :=(Format('%f', [Summezahl]));

jaenicke 7. Mär 2009 15:38

Re: RoundX erhalte immer nur eine Nachkommastelle
 
Wie wäre es mit %0.2f für 2 Nachkommastellen. Mehr zu den Formaten findest du ausführlich in der Hilfe.

// EDIT:
%s ist ein Platzhalter für einen String und nicht eine Zahl. Aber auch das steht in der Hilfe...

capo 7. Mär 2009 15:40

Re: RoundX erhalte immer nur eine Nachkommastelle
 
Danke habe es auch gerade gesehen :)


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