dziesiętny w c # nieporozumieniu?
(próbując przeanalizować, jakdecimal
działa) && po przeczytaniuArtykuł @jonskeet i widzącmsdn i myślenie przez ostatnie 4 godziny, Mam parę pytań :
wten link mówią coś bardzo prostego:
1.5 x 10^2
ma2
znaczące liczby
1.50 x 10^2
ma3
znaczące liczby.
1.500 x 10^2
ma4
znaczące liczby itp ...
ok ... mamy pomysł.
z artykułu Jona:
sign * mantissa / 10^exponent
Jak zwykle znak jest tylko jednym bitem, ale jest 96 bitów mantysy i 5 bitów wykładnika
^ _ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^___ ^^^^^
1 _ 96 5
dobrze
tak maxMantiss val =2^96-1 = 79228162514264337593543950335
który jest :7.9228162514264*10^28
(według mojego iPhone'a ... nie można zobaczyć reprezentacji wykładnika w systemie Windows Calc.)
ogłoszenie :
7.9228162514264*10^28
ma14 liczby znaczące (zgodnie z powyższymi przykładami)
teraz część z 5 bitami w wykładniku jest nieistotna, ponieważ jest wmianownik - więc potrzebuję min val, który wynosi 2 ^ 0
Pytanie 1 :
msdn powiedzieć: 28-29 significant digits
ale według mojej próbki (1.500 x 10^2
ma4
znaczące liczby) oni mają2 znaczące liczby7.9
(7 i 9).
jeśli msdn napisałby:
±79228162514264337593543950335 × 10^0
zrozumiałbym to, ponieważ wszystkie znaczące cyfry sąw wyrażeniu.
dlaczego piszą 28-29, ale wyświetlają 2?
pytanie 2 :
jak będzie wyświetlana reprezentacja dziesiętna (mantiss && wykładnik) dla wartości 0,5?
maksymalny mianownik może być2^32-1 --> 31
dzięki chłopaki.
pytanie 3 :
1 + 96 + 5 = 102 bity.
msdn mówi:
Słowo dziesiętne oznacza 128-bitowy typ danych.
128-102 = 26
mógłbym z artykułu zrozumieć, dlaczego nie ma zastosowania do tych 26 bitów