AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Runden auf eine Nachkommastelle

Ein Thema von Benedikt1983 · begonnen am 22. Dez 2003 · letzter Beitrag vom 23. Dez 2003
Antwort Antwort
Benutzerbild von Tonic1024
Tonic1024

Registriert seit: 10. Sep 2003
Ort: Cuxhaven
559 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Re: Runden auf eine Nachkommastelle

  Alt 23. Dez 2003, 07:41
Moin...

Kommt darauf an, wofür man die Zahl braucht. Trunc rundet immer gegen null (zero). Das bedeutet 4.899999 ergibt glatt 4.8, was definitv falsch ist.

Wenn es für ein reines Abschneiden der Zahl zur Anzeige ist mag das Okay sein, ein runden ist es aber nicht.

Irgendwo habe ich gelesen, dass die Delphi-Funktionen zum runden teilweise einen Schatten haben (nicht immer richtig arbeiten) und da habe ich mir folgendes ausgedacht. Rundet kaufmännisch.

Delphi-Quellcode:
// Stellen default = 0 -> Keine Nachkommastellen!
function Runden(wert: extended; stellen: integer = 0):extended;
var integerWert: integer;
    format: string;
    i: integer;
    temp: string;
begin
  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);
end;
Ist getestet und sollte zuverlässig arbeiten.

[BTW: Wenn jeman einen Fehler entdeckt bin ich durchaus an Verbesserungsvorschlägen interessiert]

bis denne...
Der frühe Vogel fängt den Wurm, richtig.
Aber wird nicht auch der frühe Wurm vom Vogel gefressen?
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:23 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