[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/ .