Hola todos, pregunta rápida: ¿Cómo se representa un tipo .NET decimal
en binario en la memoria?Representación binaria de .NET Decimal
Todos sabemos cómo se almacenan los números de punto flotante y los thusly las razones de la inexactitud de los mismos, pero no puedo encontrar ninguna información sobre decimal
excepto los siguientes:
- parecer más precisa que la flotante números de punto
- Toma 128 bits de memoria
- 2^96 + signo gama
- 28 (a veces 29?) cifras totales significativos en el número
¿Hay alguna manera de que pueda resolver esto? El científico de la computación en mí exige la respuesta y después de una hora de intentos de investigación, no puedo encontrarla. Parece que hay muchas partes perdidas o solo estoy imaginando esto mal en mi cabeza. ¿Alguien puede arrojar algo de luz sobre esto, por favor? Gracias.
+1 respuesta fantástica, directa al grano y rica en información. – JoshD
@Jacob: No, eso * claramente * no es cierto. Dado que puedes comenzar con un número entero y terminar con (digamos) 0.1, eso obviamente se está desplazando hacia la derecha. Si pudieras * solo * desplazarte hacia la izquierda, podrías representar 10, 100, etc., pero no 0.1, 0.01, etc. En el futuro, espera un "aviso" antes de cambiar significativamente el significado de una respuesta como esta. Consulte la documentación para 'decimal': http://msdn.microsoft.com/en-us/library/1k2e8atx.aspx, donde se habla del factor de escala como * dividiendo * el número entero, que es equivalente a desplazarlo al derecho. –
Mis disculpas. Para mí, es más intuitivo pensar que cambia el * punto decimal * a la * izquierda *, pero ahora veo que te refieres a "cambiar" la mantisa. – Jacob