2009-04-13 15 views
12

No está claro en el tamaño de los tipos decimales. ¿El tamaño en bytes varía por precisión como en el servidor sql? ¿La variable de precisión para el tipo de C# es "decimal"?C# sizeof decimal?

No deseo activar el código no seguro para simplemente llamar a sizeof en un tipo decimal. ¿Cómo te acercarías a esto?

Respuesta

15

Como han dicho otros, decimal es siempre de 16 bytes (128 bits). La precisión de decimal es siempre de 28/29 dígitos. Es un tipo de punto flotante, a diferencia del tipo de SQL DECIMAL. Ver my article on it para más detalles.

+1

Esta es, de lejos, la mejor respuesta si hace clic en el enlace y lee el artículo. MSDN no llega a explicar cómo se almacena lo que realmente se requiere en la fuente de referencia primaria. –

22

La palabra clave decimal indica un tipo de datos de 128 bits.

Fuente: MSDN

+0

Hay una versión de bajo ancho de banda de MSDN ahora>? Interesante. De acuerdo, tengo una conexión de alta velocidad tanto en casa como en el trabajo, pero es interesante saberlo. – Powerlord

+0

Sí, prefiero vincular a la versión de bajo ancho de banda cuando se utiliza como referencia, ya que se carga mucho más rápido y se reproduce muy bien en la mayoría de los navegadores. –

+0

+1 para banda baja: también aprendí algo nuevo hoy. –

5

El tamaño de un System.Decimal en el Marco .NET se establece en 16 Bytes.

1

128 bits valores decimales exactos con 28-29 dígitos significativos, 128 bits = 16 bytes