Re: Ungenauigkeit Double



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)
Hi Scotty,
ich habe (früher 8.bit usw.) bei diesen immer versucht die
Schrittweite ganzzahlig (z.B. 360° ) zu machen und erst zu Berechung das
Bogenmass
zu nutzen. Das gibt nicht diese Dreckeffekte.
Das Problem ist der letzte Durchlauf der bei 1E-10 (o.ä.) nicht 0 ist, also
noch eine Runde.

Also
Dim U As Double = 0
Const a As Double = 1.258
Const b As Double = 1.258

Dim dx As Integer = 1000 ' in dx-tel Grad
Dim dblGrad2Bogen As Double = 4 * Math.Atan(1) / 180 / dx

For i As Integer = 0 To CInt(90 * dx)
U += Math.Sqrt(a ^ 2 * Math.Cos(dblGrad2Bogen * i) ^ 2 + _
b ^ 2 * Math.Sin(dblGrad2Bogen * i) ^ 2) * dblGrad2Bogen
Next
Console.WriteLine(CStr(U) & Space(6) & CStr(a * 4 * Math.Atan(1) /
2))
Console.ReadLine()

geht das ihmo schon ganz gut



.



Relevant Pages