Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   double Variable runden (https://www.delphipraxis.net/202936-double-variable-runden.html)

d3vid 26. Dez 2019 19:24

double Variable runden
 
Nächste frage, wie kann ich eine double Variable auf 2 nachkomma stellen runden?
Ich finde iwie keine funktionierende Lösung

Mfg

p80286 26. Dez 2019 19:55

AW: double Variable runden
 
wie wäre es mit
Delphi-Quellcode:
Roundto
oder
Delphi-Quellcode:
SimpleRoundto
?
Oder Du machst es selbst
Delphi-Quellcode:
wert:=(round(x*100)/100)
wobei wert den Typ Currency haben sollte.

Gruß
K-H

Jasocul 27. Dez 2019 06:35

AW: double Variable runden
 
Zitat:

Zitat von d3vid (Beitrag 1453956)
Ich finde iwie keine funktionierende Lösung

Das ist immer etwas wenig, um jemandem zu helfen. Da muss man schon wissen, was versucht wurde.

Das normale round macht ein bankers-rounding, was mit unserem üblichen kaufmännischen Runden nichts zu tun hat. Daher bitte auch RoundTo und SimpleRound ansehen, wie K-H schon schrieb.

Frickler 27. Dez 2019 07:40

AW: double Variable runden
 
Zitat:

Zitat von d3vid (Beitrag 1453956)
Nächste frage, wie kann ich eine double Variable auf 2 nachkomma stellen runden?
Ich finde iwie keine funktionierende Lösung

Kurz und knapp:
Delphi-Quellcode:
function rnd(x: double): double;
begin
  if x >= 0 then
    result := int(x * 100.0 + 0.5) / 100.0
  else
    result := int(x * 100.0 - 0.5) / 100.0
end;
Das kann man dann nach Gusto variieren, etwa Runden auf 0,05 (z.B. für Geldbeträge in Ländern, die 1ct und 2ct Münzen abgeschafft haben):
Delphi-Quellcode:
function rnd05(x: double): double;
begin
  if x >= 0 then
    result := int(x * 20.0 + 0.5) / 20.0
  else
    result := int(x * 20.0 - 0.5) / 20.0
end;
Funktioniert mit jeder Delphi-Version.

Neutral General 27. Dez 2019 10:47

AW: double Variable runden
 
Die Frage ist auch ob du wirklich den Wert runden willst, oder ob du den Wert in einem Label o.ä. nur mit 2 Nachkommastellen ANZEIGEN willst?
Dafür gäbe es dann z.B. die Funktionen FloatToStrF/CurrToStrF, Format oder FormatFloat.

Das wäre nämlich ein ganzes Stück einfacher als den eigentlichen Wert zu runden.

hoika 27. Dez 2019 10:55

AW: double Variable runden
 
Hallo,
und zu guter Letzt gibt es auch noch arithmetisches (mathematisches) Runden und kaufmännisches Runden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz