Einzelnen Beitrag anzeigen

Benutzerbild von Davidlocke13
Davidlocke13

Registriert seit: 19. Sep 2012
Ort: MD (Sachsen-Anhalt)
166 Beiträge
 
Delphi 2010 Enterprise
 
#1

Kaufmännische Runden geht nicht !

  Alt 4. Feb 2014, 12:07
Hallo,
ich will Kaufmännische Runden auf 2 Nachkommastellen!

Dafür habe ich folgendes Programm gebastelt:

Delphi-Quellcode:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Math;

type
  TForm3 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Button2: TButton;
    Edit3: TEdit;
    Edit4: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

function RoundUp(X: double): double;
begin
   Result := Trunc(X) + Trunc (Frac(X) * 2);
end;

function RoundX(const Value:double; const NK:Integer):double;
var
   multi: double;
begin
   multi := IntPower(10, NK);
   Result := RoundUp(Value*multi) / multi;
end;


procedure TForm3.Button1Click(Sender: TObject);
var
  x: Double;
begin
  x := StrToFloat(Edit1.Text);
  Edit2.Text := FloatToStr(RoundX(x, 2));
end;

procedure TForm3.Button2Click(Sender: TObject);
var
  Y: Double;
begin
  Y:= StrToFloat(Edit3.Text);
  Edit4.Text:= FloatToStr(Round(Y));
end;

end.
Ergebnisse der Rundung die ich bekomme:

16,5556 --> 16,56 Ergebnis stimmt !
16,56455 --> 16,56 was raus kommen sollte: 16,57
16,121313 --> 16,12 was raus kommen sollte: 16,13

Also wenn die Zahlen am Ende kleiner als 5 sind wird nicht aufgerundet!
Was muss ich ändere damit ich das gewünschte Ergebnis bekomme?

Liebe Grüße
David
ApfelsineMandarineAllesGleich
  Mit Zitat antworten Zitat