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