decimal em c # mal-entendido?
(enquanto tentava analisar comodecimal
funciona) && depois da leituraartigo @jonskeet e vendomsdn e pensando nas últimas 4 horas, Eu tenho algumas questões :
emesse link eles dizem algo muito simples:
1.5 x 10^2
tem2
números significativos
1.50 x 10^2
tem3
números significativos.
1.500 x 10^2
tem4
figuras significativas etc ...
ok ... nós temos a ideia.
do artigo de jon:
sign * mantissa / 10^exponent
Como de costume, o sinal é apenas um bit, mas existem 96 bits de mantissa e 5 bits de expoente
^ _ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^___ ^^^^^
1 _ 96 5
Está bem
então maxmantiss val =2^96-1 = 79228162514264337593543950335
qual é :7.9228162514264*10^28
(de acordo com o meu iphone ... não consigo ver a representação do expoente no windows calc.)
aviso prévio :
7.9228162514264*10^28
tem14 números significativos (de acordo com os exemplos acima)
agora a parte com o bit 5 no expoente é irrelevante porque está nodenominador - então eu preciso do min val que é 2 ^ 0
questão 1 :
msdn diz: 28-29 significant digits
mas de acordo com a minha amostra (1.500 x 10^2
tem4
números significativos) eles têm2 números significativos que é7.9
(7 e 9).
se msdn teria escrito:
±79228162514264337593543950335 × 10^0
Eu entenderia isso, já que todos os dígitos significativos sãona expressão.
por que eles escrevem 28-29 mas exibem 2?
Questão 2 :
como a representação decimal (mantiss && exponent) será exibida para o valor 0.5?
o denominador max pode ser2^32-1 --> 31
obrigado rapazes.
Questão 3 :
1 + 96 + 5 = 102 bits.
msdn diz:
A palavra-chave decimal indica um tipo de dados de 128 bits.
128-102 = 26
poderia understnad do artigo porque não há um uso para esses 26 bits