[CSharp.net] Double und Addition

listen1@iaguna.com csharp.net at glengamoi.com
Tue, 30 Nov 2004 05:34:43 -0500


Hallo,
danke f=C3=BCr den Tip.

Hier f=C3=BCr alle die es interessiert nochmal die L=C3=B6sung aufbereitet=
:

~~~
Double Value1 = Convert.ToDouble("0,05"); 
Double Value2 = Convert.ToDouble("0,01");

Double Erg = Value1 + Value2;

if(Math.Abs(Erg -
Convert.ToDouble("0,06"))<Convert.ToDouble("0,000000000000001"))
         Console.Write("Equal");
else
         Console.Write("Not Equal");
~~~

Hierbei habe ich die maximale Abweichung auf 15 Stellen hinter dem Komma,
festgelegt. Ist die Abweichung kleiner als dieser Fix-Wert wird ein
Vergleich als 'gleich' betrachtet, wenn nicht dann als 'ungleich'.
Den oft im Zusammenhang mit Rundungsabweichungen bei Bruchzahlen
angesprochenen Wert 'Double.Epsilon' kann man f=C3=BCr dieses Beispiel n=
icht
verwenden, daf=C3=BCr sind die Abweichungen zu gro=C3=9F.


gru=C3=9F,
marcus


Original Message:
-----------------
From: Christoph Wille christophw@alphasierrapapa.com
Date: Tue, 30 Nov 2004 09:48:11 +0100
To: csharp=2Enet@glengamoi.com
Subject: Re: [CSharp.net] Double und Addition


Ist die EDV Ausbildung also doch zu was gut ;-) So in etwa sieht das aus:

If (Abs(dResult - dExpectedResult) < dDelta) Then

Chris

At 09:02 AM 11/30/2004, you wrote:
>hmm, hab jetzt mal gesucht aber nix gefunden.
>Kannst du mir einen Tipp geben, was 'Deltas' sind, bzw. wie man damit e=
ine
>Vergleich durchf=C3=BChrt.
>
>danke,
>marcus
>
>
>Original Message:
>-----------------
>From: Christoph Wille christophw@alphasierrapapa.com
>Date: Tue, 30 Nov 2004 08:48:07 +0100
>To: csharp=2Enet@glengamoi.com
>Subject: Re: [CSharp.net] Double und Addition
>
>
>Direktes Double-Vergleichen ist ein no-no; daf=EF=BF=BDr verwendet man De=
ltas.
>
>Chris
>
>At 08:41 AM 11/30/2004, you wrote:
> >Ich habe eine Frage zur Konvertierung und Addition von 'Double' Typen,
die
> >mir einige Schwierigkeiten bereiten.
> >
> >Folgender kleiner Code-Ausschnitt:
> >
> >~~~
> >Double Value1 = Convert.ToDouble("0,05"); Double Value2 =
> >Convert.ToDouble("0,01");
> >
> >Double Erg = Value1 + Value2;
> >
> >if(Erg==Convert.ToDouble("0,06"))
> >         Console.Write("Equal");
> >else
> >         Console.Write("Not Equal");
> >~~~
> >
> >Leider bekomme ich immer 'Not Equal' als Ergebnis da die Variable 'Erg'=

bei
> >der Addition den Wert 0,0600000000000000005 erh=EF=BF=BDlt, obwohl Valu=
e1 und
> >Value2 den richtigen Wert enthalten
> >
> >Wie bekomme ich jedoch nun den wirklichen Wert (0,06) und die korrekte
> >Pr=EF=BF=BDzession, damit dieser Vergleich hier funktioniert? Wo liegt =
der
>Fehler?
> >
> >Danke f=EF=BF=BDr jede Hilfe,
> >marcus


_______________________________________________
CSharp.net Mailingliste, Postings senden an:
CSharp=2Enet@glengamoi.com
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/csharp.net


--------------------------------------------------------------------
mail2web - Check your email from the web at
http://mail2web.com/ .