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)
"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:
Tags und Links c#