AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein C# kann nicht rechnen oder bin ich zu blöd?¿?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Phoenix · begonnen am 23. Mai 2008 · letzter Beitrag vom 27. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#1

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

  Alt 23. Mai 2008, 13:25
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?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

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

  Alt 23. Mai 2008, 13:30
Schreib mal:
Code:
private double _Qs = 30.0;
Und bei den Konstanten, mit denen du dividierst, auch.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#3

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

  Alt 23. Mai 2008, 13:31
Joa.. integer 3600 / integer 1000 = integer 0...
Robert hat mich da grad nett drauf aufmerksam gemacht.. Mannomann...

Also Anwtort. Ich bin zu blöd
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#4

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

  Alt 23. Mai 2008, 13:33
Alternativ stell deinen Zahlen ein "f" bzw. "d" nach. Also "(1000d / 3600d)".
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#5

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

  Alt 23. Mai 2008, 13:34
Zitat von Phoenix:
Also Anwtort. Ich bin zu blöd
Das gleiche Problem hat mich in Java auch ne Stunde gekostet bis ich drauf gekommen bin.
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#6

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

  Alt 23. Mai 2008, 13:41
Zitat von Phoenix:
Also Anwtort. Ich bin zu blöd
Das war es eiegtnlich worauf ich ihn nett hingewiesen habe.
Der Teil mit Integer/Integer=Integer war nur Alibi...
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#7

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

  Alt 23. Mai 2008, 13:44
Nu is gut, ja? :-p
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#8

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

  Alt 23. Mai 2008, 14:48
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
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

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

  Alt 23. Mai 2008, 14:56
Was heißt ungenau? Wenn ich nur zwei Nachkommastellen brauche, dann reicht auch Double.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#10

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

  Alt 23. Mai 2008, 15:05
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
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:13 Uhr.
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