Servus
Also folgendes Problem, ich habe ein Array (ungefähr 500 Felder groß) vom Typen Double, die Werte liegen alle so im Bereich von 0 bis 1 (zb 0,30509745127 usw) diese Werte spiegeln die Häufigkeit eines Ereignisses wieder (sprich in diesem Falle ~30%), wie gesagt will ich jetzt die ganze Reihe von WSK addieren, das mache ich nach folgender Formel:
Angenommen a, b,... n sind die WSK:
(a*b*...*n)
------------------------------------
(a*b*...*n)+(1-a)*(1-b)*...*(1-n)
Programmtechnisch hab ich das wie folgt realisiert:
Delphi-Quellcode:
uses
Math;
var
wsk: Array of Double;
i: Integer;
zaehler: Double;
nenner: Double;
rWSK: Double;
begin
zaehler := wsk[0];
for i := 1 to High(wsk) do
begin
zaehler := zaehler * wsk[i];
end;
nenner := 1 - wsk[0];
for i := 1 to High(wsk) do
begin
nenner := nenner * (1 - wsk[i]);
end;
rWSK := zaehler / (zaehler + nenner);
rWSK := RoundTo((rWSK * 100), -2);
end;
Soweit so gut, allerdings krieg ich als Ergebnis winzigkleine Werte raus, was partout nicht sein kann (bei einer geschätzten durchschnittl. WSK von etwa 50%), also die Werte liegen so im bereich von -9e^26
Weiß jemand wo der Fehler im Algorithmus ist?
mfg phluphlu