Salut à tous, question rapide: Comment un type .NET decimal
est représenté en binaire en mémoire?Représentation binaire d'un .NET Decimal
Nous savons tous comment les nombres à virgule flottante sont stockés et les Thusly les raisons de l'inexactitude de celle-ci, mais je ne peux trouver aucune information sur decimal
sauf les suivants:
- Apparemment, plus précis que flottante des nombres à virgule
- Prend 128 bits de mémoire
- 2^96 + signe gamme
- 28 (parfois 29?) le total des chiffres significatifs dans le nombre
Y a-t-il un moyen de le comprendre? L'informaticien en moi demande la réponse et après une heure de recherche, je ne la trouve pas. On dirait qu'il y a beaucoup de bits gaspillés ou que je ne me fais pas d'illusions dans ma tête. Quelqu'un peut-il nous éclairer? Merci.
+1 réponse fantastique, droit au but et riche en informations. – JoshD
@Jacob: Non, c'est * clairement * pas vrai. Étant donné que vous pouvez commencer avec un nombre entier et finir avec (disons) 0,1, cela change évidemment bien. Si vous pouviez * seulement * décaler vers la gauche, vous seriez en mesure de représenter 10, 100 etc - mais pas 0,1, 0,01 etc. Dans l'avenir, veuillez attendre un "ack" avant de changer significativement la signification d'une réponse. Voir la documentation pour 'decimal': http://msdn.microsoft.com/en-us/library/1k2e8atx.aspx - où le facteur d'échelle est décrit comme * divisant * l'entier, ce qui équivaut à le déplacer vers le droite. –
Mes excuses. Pour moi, il est plus intuitif de penser à déplacer le * point décimal * vers le * gauche *, mais je vois maintenant que vous parlez de "déplacer" la mantisse. – Jacob