Warum Dezimalzahl in c # unterscheidet sich von anderen c # -Typen?

8

Mir wurde gesagt, dass die Dezimalzahl als benutzerdefinierter Typ implementiert ist und andere c # -Typen wie int spezifische Opcodes haben. Was ist der Grund dafür?

    
suhair 04.12.2008, 04:52
quelle

2 Antworten

11

decimal ist nicht allein hier; DateTime , TimeSpan , Guid usw. sind ebenfalls benutzerdefinierte Typen. Ich denke, der Hauptgrund ist, dass sie nicht auf CPU-Primaten abgebildet werden. float (IEEE 754), int usw. sind hier ziemlich allgegenwärtig, aber decimal ist auf .NET zugeschnitten.

Das verursacht nur dann wirklich ein Problem, wenn Sie mit den Operatoren direkt über Reflektion sprechen wollen (da sie für int usw. nicht existieren). Ich kann mir keine anderen Szenarien vorstellen, bei denen Sie den Unterschied bemerken würden.

(eigentlich gibt es noch Strukturen, um die anderen darzustellen - ihnen fehlt einfach das meiste von dem, was man in erwarten könnte, wie Operatoren)

    
Marc Gravell 04.12.2008, 05:17
quelle
6
  

"Was ist der Grund dafür?"

Dezimalmathematik wird in Software versus Hardware gehandhabt. Derzeit unterstützen viele Prozessoren keine native Dezimalzahl (finanzielle Dezimalzahl gegenüber Float). Das ändert sich jedoch mit der Einführung von IEEE 754R.

Siehe auch:

Corbin March 04.12.2008 06:17
quelle

Tags und Links