Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Prism Stellen eines Integer Wertes begrenzen (https://www.delphipraxis.net/40062-stellen-eines-integer-wertes-begrenzen.html)

ELWOOD 10. Feb 2005 14:45


Stellen eines Integer Wertes begrenzen
 
Wie kann man die Stellen eines Integer Wertes begrenzen???(zb 0,0105432 begrenzen auf 2 Stellen hinter dem Komma = 0,01 !!!

mirage228 10. Feb 2005 14:46

Re: Stellen eines Integer Wertes begrenzen
 
Hi,

Integer ist nur für Ganzzahlen und nicht für Kommazahlen gedacht.

Du kannst Dir aber einen eigenen Typ für Ganzzahlen erstellen
Delphi-Quellcode:
type
  TMyIntegerType = 1..20; // von 1 bis 20
mfG
mirage228

Oxmyx 10. Feb 2005 14:51

Re: Stellen eines Integer Wertes begrenzen
 
Erstmal ist natürlich richtig, dass ein Ganzzahldatentyp keine Kommastellen speichert. Für Fließkommadatentypen (z.B. Single) gibt's die Funktion FormatFloat.

Chegga 10. Feb 2005 14:52

Re: Stellen eines Integer Wertes begrenzen
 
Zitat:

Zitat von ELWOOD
Wie kann man die Stellen eines Integer Wertes begrenzen???(zb 0,0105432 begrenzen auf 2 Stellen hinter dem Komma = 0,01 !!!

Wahrscheinlich meinst du Real. :wink:
Dann kannst du es so machen:
Delphi-Quellcode:
FloatToStrF(Zahl, Format, Genauigkeit, Kommastellen);
For example:

Delphi-Quellcode:
Ergebnis := Zahl1 / Zahl2;
Label1.Caption := FloatToStrF(Ergebnis, ffNumber, 8, 2);
MfG Marc

Stanlay Hanks 10. Feb 2005 14:53

Re: Stellen eines Integer Wertes begrenzen
 
Hi. Willst du die Zahl runden auf zwei Stellen? Dann schaue dir mal System.Math.Round() an. Da kann man angeben, auf wie viele Stellen man runden will.

Man liest sich, Stanlay :hi:

Matze 10. Feb 2005 14:56

Re: Stellen eines Integer Wertes begrenzen
 
Cheggas Lösung kann ungenau sein, such hier mal nach [dp]kaufmännisch* runden[/dp].

Master_RC 10. Feb 2005 15:03

Re: Stellen eines Integer Wertes begrenzen
 
gut...

außer dem kaufmännischen runden (ab einer 5 wird aufgerundet) gibt es noch das.... ähm... "dingsbumsianische" runden, das mit round() funktioniert.

das rundet immer ab!


dann für ne nachkommastelle wär doch der variablentyp "double" nicht schlecht, oder?

Tyrael Y. 10. Feb 2005 15:11

Re: Stellen eines Integer Wertes begrenzen
 
Die Format Funktion solltest du dir auch mal angucken

Binärbaum 11. Feb 2005 02:04

Re: Stellen eines Integer Wertes begrenzen
 
Zitat:

Zitat von Master_RC
dann für ne nachkommastelle wär doch der variablentyp "double" nicht schlecht, oder?

Double ist auch nur ein Real-Typ, der aber doppelte Genauigkeit hat.
Allerdings bringt das hier nicht viel, da ja gerundet wird und nach einer bestimmten Nachkommastelle der Rest "abgeschnitten" bzw. gerundet werden soll. :wink: Da reicht auch ein "normaler" Real, oder evtl. sogar Single (kann man ja mal ausprobieren).

MfG
Binärbaum

Matze 11. Feb 2005 07:06

Re: Stellen eines Integer Wertes begrenzen
 
Zitat:

Zitat von Binärbaum
Da reicht auch ein "normaler" Real, oder evtl. sogar Single (kann man ja mal ausprobieren).

Ich habe hier irgendwo gelesen, dass man anstalle von real immer double nehmen sollte und real nur aufgrund der Abwärtskompatibilität noch enthalten ist.

Andere sagen, dass real intern als double gehandhabt wird. Wie ist das denn nun genau?

kalmi01 11. Feb 2005 07:13

Re: Stellen eines Integer Wertes begrenzen
 
Hi ELWOOD,

wie wärs denn damit:

a := 0.01232345;
a := Trunc(a * 100) / 100; //ab 3.ter Stelle abschneiden

oder

a := Trunc(a * 100 + 0.5) / 100; //an 3.ter Stelle runden

Gruß
Michael

Binärbaum 11. Feb 2005 10:33

Re: Stellen eines Integer Wertes begrenzen
 
Zitat:

Zitat von Matze
Zitat:

Zitat von Binärbaum
Da reicht auch ein "normaler" Real, oder evtl. sogar Single (kann man ja mal ausprobieren).

Ich habe hier irgendwo gelesen, dass man anstalle von real immer double nehmen sollte und real nur aufgrund der Abwärtskompatibilität noch enthalten ist.

Andere sagen, dass real intern als double gehandhabt wird. Wie ist das denn nun genau?

Real ist ein Typ, der 6 Byte belegt (und eigentlich nur für Abwärtskompatibilität vorhanden ist). Single hingegen belegt nur 4 Byte, allerdings lassen sich damit nicht so viele Zahlen darstellen wie mit Real. Und schließlich Double: ein Double belegt 8 Byte (also doppelt soviel wie Single) und damit kann man Fließkommazahlen mit größerer Genauigkeit darstellen, als es mit Single möglich ist.

Anmerkung:
Ich glaube mich zu erinnern, dass Real ein generischer Typ ist, und dass damit also die Größe und Genauigkeit dieses Typs je nach Delphi-Version verschieden sein kann. Also im Zweifelsfall sollte man besser Single oder Double verwenden.

[Edit2]
Und dann gibt es ja noch den Typ Extended für alle, denen Double noch nicht reicht. Extended ist 10 Byte groß.
[/Edit2]


MfG
Binärbaum

//Edit1: Tippfehler korrigiert


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