AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Auf 2 stellen Runden

Ein Thema von Kuster Peter · begonnen am 27. Okt 2007 · letzter Beitrag vom 12. Okt 2017
Antwort Antwort
Seite 1 von 2  1 2   
Kuster Peter

Registriert seit: 3. Apr 2007
Ort: Zürich
136 Beiträge
 
Delphi 7 Professional
 
#1

Auf 2 stellen Runden

  Alt 27. Okt 2007, 22:48
Habe bisher mit Fox Pro gearbeitet und stehe auf dem Schlauch:


Runden: Ich will eine Zahl auf 2 Stellen runden, meine Test funktioniert nicht, es will einfach die Funktion roundto nicht akzeptieren:

Delphi-Quellcode:
var
  Form1: TForm1;
  rech1 : single;
  rech2 : single;
  rech3 : single;

implementation

{$R *.dfm} 

procedure TForm1.Button1Click(Sender: TObject);
begin
      rech1 := 8;
      rech2 := 9;
      rech3 := rech1 / rech2;
      label1.Caption := floattostr(roundto(rech3, -2));
end;
Peter
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: Auf 2 stellen Runden

  Alt 27. Okt 2007, 22:50
Delphi ist nun mal nicht FoxPro.
Delphi-Quellcode:
function Round(e: Extended; precision: Integer): Extended;
var factor: Extended;
begin
  factor := Power(10, precision);
  Result := Round(e * factor) / factor;
end;
  Mit Zitat antworten Zitat
27. Okt 2007, 22:57
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Auf 2 stellen Runden

  Alt 27. Okt 2007, 23:01
Hallo Peter,

du mußt die Unit Math in die USES-Anweisung aufnehmen, um die Funktion RoundTo nutzen zu können.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

Re: Auf 2 stellen Runden

  Alt 27. Okt 2007, 23:14
warum nimmst du nicht
FloatToStrF(Wert, ffFixed, 8, 2); Das ergibt immer zwei korrekt gerundete Nachkommastellen.
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 4. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#6

Re: Auf 2 stellen Runden

  Alt 28. Okt 2007, 02:14
Hallo Leute,

mit dem Runden habe ich so meine Probleme.

Zum Beispiel wird aus 30,14500 beim runden immer 30,14000 statt 30,15000

aus 3,145 wird 3,15
aus 4,145 wird 4,14
... zum Testen jeweils um Eins erhöht
aus 31,145 wird 31,14
aus 32,145 wird 32,15


Hat jemand dafür eine Erklärung?


@Hawkeye:
Die Funktion RoundTo gibt es bei mir auch mit der Unit Math nicht.

mfg
eddy
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#7

Re: Auf 2 stellen Runden

  Alt 28. Okt 2007, 04:46
Ich glaube zu diesem Thema mit dem Kaufmännischen Rundungsverhalten von Delphi gabs schon mal min. einen Thread!

Versuch mal was zu finden mit der Suchfunktion!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#8

Re: Auf 2 stellen Runden

  Alt 28. Okt 2007, 10:16
Zitat von eddy:
Hallo Leute,

mit dem Runden habe ich so meine Probleme.

Zum Beispiel wird aus 30,14500 beim runden immer 30,14000 statt 30,15000

aus 3,145 wird 3,15
aus 4,145 wird 4,14
... zum Testen jeweils um Eins erhöht
aus 31,145 wird 31,14
aus 32,145 wird 32,15


Hat jemand dafür eine Erklärung?


@Hawkeye:
Die Funktion RoundTo gibt es bei mir auch mit der Unit Math nicht.

mfg
eddy
das ist das sogenannte Bankers Rounding, welches in der FPU implementiert ist, da die Round Funktion diese Funktion verwendet, wird es automatisch wie oben Formatiert. genaueres, in der OH.
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Auf 2 stellen Runden

  Alt 28. Okt 2007, 12:01
Zitat von eddy:
Hallo Leute,

mit dem Runden habe ich so meine Probleme.


aus 31,145 wird 31,14
Hast du es schon mal mit ShowMessage(Format('%.2f', [31.145])); versucht?
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Kuster Peter

Registriert seit: 3. Apr 2007
Ort: Zürich
136 Beiträge
 
Delphi 7 Professional
 
#10

Re: Auf 2 stellen Runden

  Alt 28. Okt 2007, 16:59
Hallo Leute

Aufgrund Euerer Antworten ist mir plötzlich eine Lösung eingefallen, die in allen Programmiersprachen funktioniert:

Klar Fox ist nicht Delphi, darum wechsle ich auch auf Delphi und verlasse das Fox, doch ich habe eine Lösung, die ich vom Fox her abgewandelt habe:

Beispiel:

Delphi-Quellcode:
var
  Form1: TForm1;
  rech1 : single;
  rech2 : single;
  rech3 : single;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
      rech1 := 8;
      rech2 := 9;
      rech3 := rech1 / rech2;
      label1.Caption := floattostr(round(rech3 * 100) / 100);
end;
Und wenn wir schon dabei sind, hier meine Lösung um auf 5 zu Runden, was man in der CH braucht:

Delphi-Quellcode:
var
  Form1: TForm1;
  rech1 : single;
  rech2 : single;
  rech3 : single;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
      rech1 := 2.75;
      rech2 := 55;
      rech3 := rech1 / rech2;
      label1.Caption := floattostr(round(rech3 * 20) / 20);
end;

Also vielen Dank für die Tipps, doch so unter uns, bin verdammt stolz, dass ich eine Lösung gefunden habe.

Peter
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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:

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