![]() |
Kaufmännische Runden geht nicht !
Hallo,
ich will Kaufmännische Runden auf 2 Nachkommastellen! Dafür habe ich folgendes Programm gebastelt:
Delphi-Quellcode:
Ergebnisse der Rundung die ich bekomme:
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. 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 |
AW: Kaufmännische Runden geht nicht !
Sorry der Teil ist was Extra, sollte nicht dazu gehören:
Delphi-Quellcode:
procedure TForm3.Button2Click(Sender: TObject);
var Y: Double; begin Y:= StrToFloat(Edit3.Text); Edit4.Text:= FloatToStr(Round(Y)); end; |
AW: Kaufmännische Runden geht nicht !
Was Du willst, ist offenbar nicht "kaufmännisches Runden", sondern immer aufrunden?
Dann sollte Roundup so aussehen:
Delphi-Quellcode:
function RoundUp(X: double): double;
begin Result := Trunc(X); if Frac(X) <> 0 then Result := Result + 1; end; |
AW: Kaufmännische Runden geht nicht !
Hi,
für mich sieht das alles korrekt nach kaufmännischem Runden aus. Willst du vielleicht immer aufrunden? Bei welchem Zahlen sollte bei dir denn abgerundet werden? Viele Grüße, Frederic |
AW: Kaufmännische Runden geht nicht !
Ich will immer aufrunden, was im übrigen Kaufmännisch am besten ist !
Mach ja keine sinn sinn wenn ich 16,3211 auf 16,32 runde, da mache ich 0,0011 Cent Verlust ! |
AW: Kaufmännische Runden geht nicht !
|
AW: Kaufmännische Runden geht nicht !
Oh dachte das ist Arithmetisch Runden !
Kaufmännische ist dann wohl doch nicht so gut wenn ich Preise berechnen will ;-) |
AW: Kaufmännische Runden geht nicht !
Vielleicht tut es das:
Delphi-Quellcode:
kein_bankers_round := ceil(value * 100)/100;
![]() Grüße Klaus |
AW: Kaufmännische Runden geht nicht !
Danke mit der Funktion geht es ;-)
Delphi-Quellcode:
function RoundUp(X: double): double;
begin Result := Trunc(X); if Frac(X) <> 0 then Result := Result + 1; |
AW: Kaufmännische Runden geht nicht !
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 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