Diskussion:Arbeiten mit .NET: Materialien/ Programmierkurs C-Sharp: Datentypen Details

Seiteninhalte werden in anderen Sprachen nicht unterstützt.
Aus Wikibooks

Inkonsistenz?[Bearbeiten]

Text im Buch:

bool istDatentypBool = true;
short s = 1;
int i = 2;
long = 3l; // l = long (kleines L)
float = 4.1f; // f = float
double = 5.9d; // d = double
decimal = 7.3m; // m = decimal

IMHO im unteren Text fehlen noch die Variablen für long, float, double und decimal
(z.B. long lg = 3l, float ft = 4.1f, ...).
Johannes: öhhh,... "long l = 3l;" steht da 3l als Wert? das ist keine Zahl oder irre ich? 31 wäre eine Zahl...

Bool stat Boolean[Bearbeiten]

Bist du dir sicher, das auch im Fließtext bool gesagt werden sollte, Anstelle von Boolean? Mir kommt es etwas unnatürlich vor, ich würde den Datentyp weiterhin Boolean nennen, hab es daher lieber in der Einleitung noch einmal erwähnt. lg --Just-Ben 17:36, 5. Nov 2004 (UTC)

Zweierkomplement und Vorzeichenbit[Bearbeiten]

Ich würde bei einem Zweierkomplement nicht von einem Vorzeichenbit spechen. Zweierkomplement ist Zweierkomplement, auch wenn sich das oberste Bit so "mißbrauchen" lässt und von CPUs so für die Flags verwendet werden.

bitwise booleans[Bearbeiten]

Eigentlich mehr eine Frage zum Thema 'bitweise Verknüfung von Boolschen Operanden': Ich vermute, ausser dem 'Ausschalten' des 'frühstmöglichen Abbrechens' der Auswertung (für die es m.A.n. kaum gute Gründe geben kann) gibt es keinen konkreten Grund dafür, diese überhaupt in die Sprache aufzunehmen, angesehen vielleicht von 'Kontinuität'? D.h. ich vermisse ein Wort (Beispiel?) zur praktischen Anwendbarkeit oder eine Aussage im Sinne von "im Allgemeinen lieber ...".

Sehe ich das falsch, oder ist das Boolsche exclusiv-oder IDENTISCH mit 'ungleich'? Persönlich finde ich 'ungleich' wesentlich lesbarer.

Ebenso persönlich ist meine Einstellung, dass EXPLIZITE Vergleiche mit true oder false FAST IMMER überflüssig sind und das Verständnis unnötig erschweren, da sie das LESEN (idealerweise im Sinne eines natürlichsprachigen Satzes) unnatürlich und komplizierter machen.

Trollpatsch

Decimal ist kein Festkommadatentyp[Bearbeiten]

Dies sollte eigentlich zu "Datentypen", nicht zu "Datentypen Details", allerdings werde ich immer hierhin verwiesen, wenn ich im Abschnitt "Datentypen" die "Diskussion" wähle.

"decimal" ist kein Festkommadatentyp, sondern ebenfalls ein Gleitkommadatentyp. Er ist doppelt so lang wie "double" (128 bit statt 64 bit), hat allerdings weniger Bits für den Exponenten reserviert (daher der geringere Wertebereich), wodurch wesentlich mehr Bits für die Mantisse übrig waren (daher die extrem hohe Genauigkeit). Schaut euch mal die Grenzen an.

Minimal: 1.0e-28 Maximal: 7.9e+28

Das funktioniert niemals mit einem Festkommadatentyp von 128 bit Länge. Ein Festkommadatentyp ist ja lediglich ein skalierter Ganzzahlwert. Wenn wir beachten, dass wir mindestens 1.0e-28 darstellen können, dann wäre das bei einem Datentyp auf Festkommabasis also die Skalierungseinheit. Sprich der Datentyp würde Vielfache von 1.0e-28 speichern. Nun betrachten wir den größten Wert. 7.9e+28 .. das ist das wieviel-fache der Skalierungseinheit? Genau! Das 7.9e+56-fache!

Nochmal zur Erinnerung: Decimal ist ein 128-bit Wert. 2^128 = ~3.4e+38 .. also um 19 Zehnerpotenzen zu wenig für einen Festkommadatentyp, der Werte zwischen 1.0e-28 und 7.9e+28 aufnehmen kann. Decimal ist eindeutig ein Gleitkomma-Datentyp (also ein Datentyp auf Basis von Mantisse und Exponenten).

Leider habe ich dafür keine vertrauenswürdige Quelle (die MSDN wollte nicht so recht etwas hergeben), aber über die Decimal.GetBits(decimal) Methode kann jeder mit ein paar .NET Kenntnissen die interne Repräsentation des Decimal-Typs einsehen.

Aufgrund mangelnder Quellen lasse ich dies hier als Anregung stehen und ändere das Wikibook vorerst noch nicht ab. 217.94.253.125 18:47, 19. Feb. 2010 (CET)[Beantworten]

Auf die Schnelle fand ich http://msdn.microsoft.com/en-us/library/system.decimal%28VS.100%29.aspx . Es ist tats. ein Fließkommatyp. --84.131.155.21 19:12, 19. Feb. 2010 (CET)[Beantworten]
Du hast recht; aber die SDK-Doku ist selbst missverständlich. Unter "Tabelle für Gleitkommatypen (C#-Referenz)" stehen nur float und double, während decimal ein eigenes Kapitel hat mit dieser Formulierung:
Das decimal-Schlüsselwort kennzeichnet einen 128-Bit-Datentyp. Im Vergleich zu Gleitkommatypen verfügt der decimal-Typ ...
Es wird also wohl als eigene Art von Typen angesehen. Unter Arbeiten mit .NET: Grundlagen: Datentypen/ Überblick über Datentypen habe ich dieses Formulierungsproblem dadurch gelöst, dass ich einfach von "Dezimalzahlen" spreche. :)
Der Aufruf dieser Diskussionsseite ist in der Tat komisch. Die Seite "Datentypen Details" steht unter "Obsolete Seiten". Der frühere Bearbeiter wusste wohl selbst nicht genau, was er wollte. Hoffentlich mache ich es mit Arbeiten mit .NET: C-Sharp besser. -- Jürgen 19:22, 19. Feb. 2010 (CET)[Beantworten]