Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi RoundTo bei 0 ist nicht 0,00 :( (https://www.delphipraxis.net/66967-roundto-bei-0-ist-nicht-0-00-a.html)

Karstadt 7. Apr 2006 08:48


RoundTo bei 0 ist nicht 0,00 :(
 
Hallo. Wie kann ich die Zahl 0 als 0,00 darstellen ? Danke

Angel4585 7. Apr 2006 08:50

Re: RoundTo bei 0 ist nicht 0,00 :(
 
schau dir mal den Befehl "Format" an:
Delphi-Quellcode:
Format('%7.2f',[0]);

DevilsCamp 7. Apr 2006 08:58

Re: RoundTo bei 0 ist nicht 0,00 :(
 
Zitat:

Zitat von Angel4585
schau dir mal den Befehl "Format" an:
Delphi-Quellcode:
Format('%7.2f',[0]);

Damit hättest du aber 3 Leerzeichen vor deinem String.

Besser ist:
Delphi-Quellcode:
Format('%0.2f', [0]);
Dann sind keine Leerzeichen davor und es wird trotzdem 0,00 (oder 0.00 je nach Einstellung von Windows) ausgegeben

Angel4585 7. Apr 2006 09:01

Re: RoundTo bei 0 ist nicht 0,00 :(
 
Oder:
Delphi-Quellcode:
Trim(Format('%7.2f',[0]));
damit gehts auch :stupid:

DevilsCamp 7. Apr 2006 09:09

Re: RoundTo bei 0 ist nicht 0,00 :(
 
Klar, aber die Frage was schneller ist, solltest du selber beantworten können ;)

Hawkeye219 7. Apr 2006 21:52

Re: RoundTo bei 0 ist nicht 0,00 :(
 
Die Beispiele mit dem konstanten Wert 0 würden leider nicht funktionieren, da die Format-Funktion eine kleine Falle enthält. Bei der Übergabe der Werte muß sehr genau darauf geachtet werden, daß der Datentyp des Werts zum zugehörigen Platzhalter im Formatstring paßt. In diesem Fall ist das nicht so: Im Formatstring steht ein Float-Platzhalter, übergeben wurde ein Integer-Wert. Das Ergebnis ist ein Laufzeitfehler!

Richtig wäre somit:

Delphi-Quellcode:
Format('%0.2f', [0.0]);
Bei der Übergabe von Integer-Variablen kann man den Wert durch eine (ansonsten unsinnige) Multiplikation mit 1.0 konvertieren:

Delphi-Quellcode:
Format('%0.2f', [1.0 * IntWert]);
Das Format "%n", mit dem große, ganzzahlige Werte durch das Einfügen von Tausendertrennzeichen etwas lesbarer gestaltet werden können, erwartet übrigens ebenfalls einen Real-Wert.

Als Alternative zur Format-Funktion bietet sich die Funktion FormatFloat aus der Unit SysUtils an.

Gruß Hawkeye

alzaimar 7. Apr 2006 22:00

Re: RoundTo bei 0 ist nicht 0,00 :(
 
Zitat:

Zitat von DevilsCamp
Klar, aber die Frage was schneller ist, solltest du selber beantworten können ;)

Ach so, es geht gar nicht um korrekte Darstellung, sondern um Performance?

Erster!
Delphi-Quellcode:
MyString := '0,00';
Schneller gehts nicht!

Hawkeye219 7. Apr 2006 22:03

Re: RoundTo bei 0 ist nicht 0,00 :(
 
Streber! :mrgreen:

SirThornberry 7. Apr 2006 22:18

Re: RoundTo bei 0 ist nicht 0,00 :(
 
es gibt auch noch die Funktion FormatFloat. Der übergibt man einfach als Format "0.00" und als zweiten Parameter die Zahl (in diesem Fall 0) und schon passt alles. da braucht man sich auch nicht drum kümmern ob der zweite Parameter ein Float oder Integer ist etc.

Hawkeye219 7. Apr 2006 22:23

Re: RoundTo bei 0 ist nicht 0,00 :(
 
*räusper*

Beitrag #6, ziemlich weit unten :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:51 Uhr.
Seite 1 von 2  1 2      

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