AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Zahl soll nur zwei kommastellen haben

Ein Thema von Äfan · begonnen am 16. Jan 2005 · letzter Beitrag vom 21. Jan 2005
Antwort Antwort
Äfan
(Gast)

n/a Beiträge
 
#1

Zahl soll nur zwei kommastellen haben

  Alt 16. Jan 2005, 19:49
Hi,

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

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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Zahl soll nur zwei kommastellen haben

  Alt 16. Jan 2005, 19:53
entweder nimmst du
  formatfloat('0', sr.Size / 1024); oder
  inttostr(round(sr.Size / 1024)); gibt, bestimmt noch mehr möglichkeiten.
mit
  formatfloat('0.00', sr.Size / 1024); oder
  FloatToStr(round(sr.Size * 100 / 1024) / 100); kannst du das ganze auch noch auf 2 nachkommastellen setzen
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
848 Beiträge
 
Delphi 10.1 Berlin Professional
 
#3

Re: Zahl soll nur zwei kommastellen haben

  Alt 16. Jan 2005, 19:54
Hallo, gugg dir mal formatfloat oder floattostrf an.

Mfg Frank

edit: zu langsam

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Zahl soll nur zwei kommastellen haben

  Alt 20. Jan 2005, 14:15
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? )
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von Chegga
Chegga

Registriert seit: 5. Nov 2004
Ort: Kirchheim
453 Beiträge
 
Delphi 7 Architect
 
#5

Re: Zahl soll nur zwei kommastellen haben

  Alt 20. Jan 2005, 14:25
Hi,

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
Marc P.
Grüße aus Kirchheim Teck
  Mit Zitat antworten Zitat
corgan

Registriert seit: 16. Okt 2003
Ort: Hannover
44 Beiträge
 
Delphi 7 Professional
 
#6

Re: Zahl soll nur zwei kommastellen haben

  Alt 21. Jan 2005, 10:27
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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf