Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C# kann nicht rechnen oder bin ich zu blöd?¿? (https://www.delphipraxis.net/114325-c-kann-nicht-rechnen-oder-bin-ich-zu-bloed-%BF.html)

Phoenix 23. Mai 2008 12:25


C# kann nicht rechnen oder bin ich zu blöd?¿?
 
Hi.

Folgender Fall in C#:
Code:
public class Test
{
   private double _Qs = 30; // Einheit: tonnen / stunde
   public double Qs
   {
      get { return _Qs; }
      set { _Qs = value; }
   }

   // simple Umrechnung: t/h --> kg/s
   public double Ms
   {
      get { return Qs / (1000 / 3600); }
      set { Qs = value * (1000 / 3600); }
   }
}
Das sieht mir auf den ersten Blick sehr richtig aus.

Beispiel im (Windows-) Taschenrechner mit 30 t/h in 108 kg/s:
30 / (1000 / 3600) = 108

Dieser getter - Code liefert mir jedoch im Debugger und in der Ausgabe (VS 2008) als Wert 'Infinity' zurück. Was fatal ist, da ich damit ja weiter rechnen muss...

Und jetzt bin ich echt perplex: Wieso kommt da so ein offensichtlich falsches Ergebnis bei raus?

Luckie 23. Mai 2008 12:30

Re: C# kann nicht rechnen oder bin ich zu blöd?¿?
 
Schreib mal:
Code:
private double _Qs = 30.0;
Und bei den Konstanten, mit denen du dividierst, auch.

Phoenix 23. Mai 2008 12:31

Re: C# kann nicht rechnen oder bin ich zu blöd?¿?
 
Joa.. integer 3600 / integer 1000 = integer 0...
Robert hat mich da grad nett drauf aufmerksam gemacht.. Mannomann...

Also Anwtort. Ich bin zu blöd :stupid:

Medium 23. Mai 2008 12:33

Re: C# kann nicht rechnen oder bin ich zu blöd?¿?
 
Alternativ stell deinen Zahlen ein "f" bzw. "d" nach. Also "(1000d / 3600d)".

Die Muhkuh 23. Mai 2008 12:34

Re: C# kann nicht rechnen oder bin ich zu blöd?¿?
 
Zitat:

Zitat von Phoenix
Also Anwtort. Ich bin zu blöd :stupid:

Das gleiche Problem hat mich in Java auch ne Stunde gekostet bis ich drauf gekommen bin. :-?

Elvis 23. Mai 2008 12:41

Re: C# kann nicht rechnen oder bin ich zu blöd?¿?
 
Zitat:

Zitat von Phoenix
Also Anwtort. Ich bin zu blöd :stupid:

Das war es eiegtnlich worauf ich ihn nett hingewiesen habe.
Der Teil mit Integer/Integer=Integer war nur Alibi... :mrgreen:

Phoenix 23. Mai 2008 12:44

Re: C# kann nicht rechnen oder bin ich zu blöd?¿?
 
Nu is gut, ja? :-p

Jürgen Thomas 23. Mai 2008 13:48

Re: C# kann nicht rechnen oder bin ich zu blöd?¿?
 
Wenn das Thema schon "C# kann nicht rechnen" heißt, möchte ich noch darauf hinweisen, dass double ungenau ist und deshalb zu Rechenfehlern führen kann.

Denen, die sich hier geäußert haben, sage ich damit sicher nichts Neues; aber für den Fall, dass andere Leser darüber stolpern, wollte ich darauf hinweisen. Jürgen

Luckie 23. Mai 2008 13:56

Re: C# kann nicht rechnen oder bin ich zu blöd?¿?
 
Was heißt ungenau? Wenn ich nur zwei Nachkommastellen brauche, dann reicht auch Double.

mkinzler 23. Mai 2008 14:05

Re: C# kann nicht rechnen oder bin ich zu blöd?¿?
 
Zitat:

Zitat von Luckie
Was heißt ungenau? Wenn ich nur zwei Nachkommastellen brauche, dann reicht auch Double.

Ween aber viele komplexe Berechnungen durchgeführt werden, addieren sich Rundungsfehler


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:53 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz