Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zahl soll nur zwei kommastellen haben (https://www.delphipraxis.net/38256-zahl-soll-nur-zwei-kommastellen-haben.html)

Äfan 16. Jan 2005 19:49


Zahl soll nur zwei kommastellen haben
 
Hi,

Beim klick werden Dateien in eine ListView geladen. Folgenden codeteil verwende ich für die Dateiengröße:

Delphi-Quellcode:
Subitems.Add(FloatToStr((sr.Size) / 1024));
Wenn ich dies mache, werden leider eine Menge Kommastellen gezeigt. Was muss ich ändern, das z.b nur 2 kommastellen angezeigt werden ?

mfg

SirThornberry 16. Jan 2005 19:53

Re: Zahl soll nur zwei kommastellen haben
 
entweder nimmst du
Delphi-Quellcode:
  formatfloat('0', sr.Size / 1024);
oder
Delphi-Quellcode:
  inttostr(round(sr.Size / 1024));
gibt, bestimmt noch mehr möglichkeiten.
mit
Delphi-Quellcode:
  formatfloat('0.00', sr.Size / 1024);
oder
Delphi-Quellcode:
  FloatToStr(round(sr.Size * 100 / 1024) / 100);
kannst du das ganze auch noch auf 2 nachkommastellen setzen

Keldorn 16. Jan 2005 19:54

Re: Zahl soll nur zwei kommastellen haben
 
Hallo, gugg dir mal formatfloat oder floattostrf an.

Mfg Frank

edit: zu langsam ;)

Binärbaum 20. Jan 2005 14:15

Re: Zahl soll nur zwei kommastellen haben
 
Man kann auch folgende Funktion verwenden, um auf eine beliebige Anzahl von Stellen zu runden:

Delphi-Quellcode:
function Runden(x: Extended; Anzahl_Stellen: Byte): Extended;
begin
 Result:= Round(x * IntPower(10, Anzahl_Stellen)) / IntPower(10, Anzahl_Stellen);
end;
Ich weiß jetzt zwar nicht genau, wie groß der Bereich von Extended ist, aber es könnte zu Bereichsüberschreitungen kommen, wenn Anzahl_Stellen zu groß gewählt wird. (Allerdings ist das eher unwahrscheinlich, denn wer will schon auf -sagen wir mal- 98 Stellen nach dem Komma runden? :wink: )

Chegga 20. Jan 2005 14:25

Re: Zahl soll nur zwei kommastellen haben
 
Hi,

Delphi-Quellcode:
FloatToStrF(Variable, ffNumber, 8, 2);
folgendes gilt:

FloatToStrF (Zahl, Format, Genauigkeit, Kommastellen);
wobei FloatToStr die Abkürzung für >Float To String Format< ist.
Bedeutung: Dezimalzahl formatiert in String umwandeln

MfG Marc

corgan 21. Jan 2005 10:27

Re: Zahl soll nur zwei kommastellen haben
 
oder wenn du kaufmännisch runden willst:

Delphi-Quellcode:
function Runden(wert: extended; stellen: integer = 0):extended;
.
.
{-----------------------------------------------------------------------------
  Procedure: Runden
  Date:     08-Okt-2004
  Arguments: wert: extended; stellen: integer = 0
  Result:   extended
-----------------------------------------------------------------------------}
function Runden(wert: extended; stellen: integer = 0):extended;
var integerWert: integer;
    format: string;
    i: integer;
    temp: string;
begin
result := 0 ;
  try
    wert:=wert*power(10,stellen);
    if wert > 0 then
    begin
      wert:=wert+0.51;
      SetRoundMode(rmDown); // Art und Weise wie gerundet wird.
    end
    else if wert < 0 then
    begin
      wert:=wert-0.51;
      SetRoundMode(rmUp); // Art und Weise wie gerundet wird.
    end
    else if wert = 0 then
    begin
      SetRoundMode(rmNearest); //Nochmal die Art und Weise.
    end;

    integerwert:=round(wert);

    wert:=integerwert/power(10,stellen);

    if stellen = 0 then
      Format:='#0'
    else
    begin
      for i:=1 to stellen do
      begin
        Format:=Format+'0';
      end;
      Format:='#0.'+Format;
    end;

    temp:=FormatFloat(Format, wert);
    Result:=StrToFloat(temp);
  except
  on E: Exception do
  begin
      fehlermeldung('- Runden - Wert: '
      + floattostr(wert)
      + ' , Stellen: '
      + floattostr(stellen)
      + ' - '
      + e.Message);
  end;
end;
end;
habe ich hier im forum gefunden, weiß aber leider nicht mehr, wer das gepostet hat.
greetz


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