![]() |
Berechnen der Fakultät: - Wert als Ergebnis??
Guten Morgen,
ich habe ein Programm für Arithmetische Berechnungen geschrieben, welches unter anderem die Fakultät einer beliebigen positiven Zahl berechnet. Es läuft bis ca. zahl=20 auch gut. Nur ab dann kommt es in unregelmäßigen Abständen dazu, dass die Ergebnisse mit negativen Vorzeichen ausgegeben werden. Hier noch der Code:
Delphi-Quellcode:
implementation
Function Fakultaet(Zahl : Int64): Int64; begin If Zahl = 0 then result := 1 else result := Zahl * Fakultaet(Zahl - 1); end;
Delphi-Quellcode:
Wo ist mein Fehler?
procedure TfrmFak.btnCalculateClick(Sender: TObject);
begin frmFak.Label1.Caption := IntToStr(Fakultaet(StrToInt(frmFak.edtZahl.text))); end; Gruß New |
AW: Berechnen der Fakultät: - Wert als Ergebnis??
Hallo,
Du hast keinen Fehler im Code. Problem ist einfach, dass die Zahlen zu groß werden. Das bedeutet die Int64-Variable läuft über und man landet im negativen Bereich. Gruß Neutral General |
AW: Berechnen der Fakultät: - Wert als Ergebnis??
Aber wenn ich teils größere Zahlen als z.B. 21 verwende, sind sie auch wieder positiv.
Int64 geht bis 65!, wo -9223372036854775808 angeblich rauskommen sollen, was aber falsch ist. 65 ! = 8.24765059 × 1090 wäre richtig. hatte es auch schon mit Double als Zahlentyp probiert. Das funktioniert allerdings werden mir da die Ergebnisse nicht so schön ausgegegeben z.B. 53,3535535E53 Ich verstehe schon was das E bedeutet etc. aber ich hätte das gerne als normale ausgabe. |
AW: Berechnen der Fakultät: - Wert als Ergebnis??
Zitat:
Delphi-Quellcode:
Um Double-Werte zu formatieren, beitet sich die Funktion "Format" an:
var
i : Integer; s : ShortInt; begin for i := 125 to 260 do begin s := i; Memo1.Lines.Add(IntToStr(s)); end;
Delphi-Quellcode:
(Details zu Format siehe Hilfe)
Label1.Caption := Format('%.0f', [1234.5678]);
|
AW: Berechnen der Fakultät: - Wert als Ergebnis??
habs nun vorerst so gelöst:
Delphi-Quellcode:
procedure TfrmFak.btnCalculateClick(Sender: TObject);
begin frmFak.Label1.Caption := FloatToStrf(Fakultaet(StrToFloat(frmFak.edtZahl.text)), ffgeneral, 6,3); end; |
AW: Berechnen der Fakultät: - Wert als Ergebnis??
Hallo Newcomer91,
ich würde bei der Fakultätsberechnung immer vorher prüfen, ob die Eingabe noch in den zulässigen Wertebereich der Variablen liegt.
Delphi-Quellcode:
Bis bald Chemiker
If Zahl > 20 then
{Fehler Ergebniss ist zu groß} |
AW: Berechnen der Fakultät: - Wert als Ergebnis??
Und ich würde eine Exception werfen.
|
AW: Berechnen der Fakultät: - Wert als Ergebnis??
Richtig:-D
|
AW: Berechnen der Fakultät: - Wert als Ergebnis??
Zitat:
|
AW: Berechnen der Fakultät: - Wert als Ergebnis??
So was unverschämtes aber auch! Haben die Leute heute keinen Anstand mehr?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21: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 by Thomas Breitkreuz