浮点数,双精度和十进制最大值与大小

时间:2014-02-22 08:32:43

标签: c# types floating-point double decimal

我在C#中遇到了这些数据类型的大小和最大值的混乱模式。

在使用Marshal.SizeOf()比较这些大小时,我发现了以下结果 -

Float- 4 bytes,
Double - 8 bytes,
Decimal - 16 bytes

当比较他们的MaxValues时,我得到了这样的结果,

 Float- 340282346638528986604286022844204804240,
 Double - 179769313486231680088648464220646842686668242844028646442228680066046004606080400844208228060084840044686866242482868202680268820402884062800406622428864666882406066422426822086680426404402040202424880224808280820888844286620802664406086660842040886824002682662666864246642840408646468824200860804260804068888,
 Decimal - 79228162514264337593543950335

我感到困惑的原因是,Decimal比Float和Double占用更多的非托管内存,但是不能包含比浮动更大的值。 任何人都可以解释编译器的这种行为。 感谢。

0 个答案:

没有答案