Ungenauigkeit Double

Tech-Archive recommends: Fix windows errors by optimizing your registry



Hallo NG,
mir ist bewusst das Zahlen eine eine gewisse Ungenaugkeit besitzen, aber das
empfinde doch schon sehr hoch:
\\\
Dim a As Double =200
Dim b As Double =100
Dim U As Double = 0
Dim dx As Double = 0.00001
For x As Double = 0 To Math.PI / 2 Step dx
U += Math.Sqrt(a ^ 2 * Math.Cos(x) ^ 2 + b ^ 2 * Math.Sin(x) ^ 2) * dx
Next
Console.WriteLine(U)
U = 0
For x As Double = Math.PI / 2 To 0 Step -dx
U += Math.Sqrt(a ^ 2 * Math.Cos(x) ^ 2 + b ^ 2 * Math.Sin(x) ^ 2) * dx
Next
Console.WriteLine(U)
///
Ausgabe:
242,212072834255
242,211440154949

Nach der 2.Nachkommastelle schon Abweichungen??? IMHO schon etwas viel. Habe
es schon mit Decimal probiert, aber das Problem stammt wohl aus dem
Rückgabewert der Math-Methoden. An der CPU wird es nicht liegen, da ich mit
einer AMD genau das gleiche Ergebnis erhalte als wie mit einer Intel-CPU.
Also, 4-5 Stellen hinter dem Komma hätte ich schon gerne. Hat jemand eine
Idee wie ich das erreichen kann? Die Schleifendurchläufe kann ich nicht
erhöhen, dauert so eigentlich schon zu lange(Die Schleifen werden 4 mal im
OnPaint durchlaufen). Leider subtrahiert sich der Fehler um so größer a und
b werden und irgendwann habe ich den vorm Komma. :=(

Hat jemand eine Idee, wie ich das genauer hinbekomme. Bin wirklich für jeden
Tipp dankbar.
--
Gruß Scotty


.



Relevant Pages