Ich möchte jetzt 'nen alten Thread wiederbeleben, der für mich unbefriedigend
endete. Die Wahrscheinlichkeit, einen 6er im Lotto zu landen, ist
6 über 49, also ca. 1/14 Mio. Mit meinem Aldi-Taschenrechner für 3,99
löse ich das problemlos. Da bei Int64-Werten bei 21! Schluß ist,
habe ich alle Variablen mit dem Typ Extended rechnen lassen.
Laut Embarcadero ist ...
Zitat:
The range for the Extended type
is between 3.6 x 10^-4951 and 1.1 x 10^4932. The size in bytes of an Extended value is 10.
Mit diesem Code prüfe ich das:
Delphi-Quellcode:
function fakultaet(N: Extended): Extended;
var
i: Integer;
begin
Result := 1;
for i := 1 to trunc(N) do
Result := Result * i
end;
function nueberk(n, k: Extended): Extended;
begin
Result := fakultaet(n) / (fakultaet(n - k) * fakultaet(k))
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=FloatToStr(nueberk(49,6));
end;
Ergebnis:
6 über 49 ---> 1,18366178998794E-60 //Falsch
49 über 6 ---> 13983816 //Richtig
Da die eine Lösung lediglich der Kehrwert der anderen Lösung ist, wundert mich das.
Frage: Was läuft hier falsch?
Grüß
Wolfgang