2012-05-16 11 views
10

(starając się analizować jak decimal prace) & & po przeczytaniu @jonskeet article i widząc msdn, a myślenie w ciągu ostatnich 4 godzin, Mam kilka pytań:dziesiętny w C# nieporozumienie?

w this link mówią coś bardzo proste:

1.5 x 10^2 ma 2 cyfr znaczących

1.50 x 10^2 ma 3 znaczący figury.

1.500 x 10^2 ma 4 cyfr znaczących itp ...

Ok ... mamy pomysł.

od Jona artykułu:

sign * mantissa/10^exponent 

jak zwykle, znak jest tylko jeden bit, ale są 96 bity mantysy i 5 bitów wykładnika

^_ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^___ ^^^^^ 

1 _      96       5 

ok

tak max mantiss val = 2^96-1 = 79228162514264337593543950335 który jest: 7.9228162514264*10^28(. zgodnie z moim iPhone ... could'nt zobaczyć wykładnik reprezentację w oknach Calc)

Wskazówka:

7.9228162514264*10^28 ma cyfr znaczących (zgodnie z przykładami powyżej)

się część z bitem wykładnika 5 jest bez znaczenia, ponieważ jej w mianownika - więc potrzebują min val o 2^0

pytanie nr 1:

MSDN powiedzieć: enter image description here28-29 significant digits

ale według mojego próbki (1.500 x 10^2 ma 4 znaczące postacie) mają cyfr znaczących, które jest 7.9 (7 i 9).

jeśli msdn byłoby napisane:

±79228162514264337593543950335 × 10^0 

chciałbym to zrozumieć, ponieważ wszystkie znaczące cyfry są w wyrażeniu.

dlaczego piszą 28-29, ale wyświetlają 2?

pytanie nr 2:

jak będzie reprezentacja dziesiętna (mantiss & & wykładnik) będą wyświetlane dla wartości 0,5?

max mianownikiem może być 2^32-1 --> 31

dzięki chłopaki.

pytanie nr 3:

1 + 96 + 5 = 102 bitów.

MSDN mówi:

Słowo kluczowe dziesiętny oznacza typ danych 128-bitowym.

128-102 = 26 

mógłby understnad z art dlaczego isnt użycie do tych 26 bitów

Odpowiedz

7

Oni biorąc pod uwagę zakres do zaledwie dwie cyfry znaczące , ale określono precyzję oddzielnie. Dlatego zakres jest wymieniony jako "przybliżony zakres".

decimal przedstawienie równy 0,5 mantysę 5 i wykładnik 1 (który jest traktowany w sensie odwrotnym do normalnego, to znaczy jest skutecznie 1).

+0

mantiss z 5 oznacza (2^5)/(1 * 10^1) - to nie jest 0.5 ...... –

+0

@RoyiNamir: Nie, mantysa ma 5. Co sprawiło, że myślisz, że ma cokolwiek do zrobić z 2^5? Podejrzewam, że źle zrozumiałeś, co to jest mantysa. –

+0

oh przepraszam ... :) po 4 godzinach wyszukiwania im myślenie w bazie 2 :) –

3

dlaczego piszą 28-29, ale wyświetlają 2?

Dla czytelności. Mówi "Przybliżony zakres" i 7.9E28 jest bardziej czytelny niż 79228162514264337593543950335 (E0 tutaj, nie E1).

jak będzie reprezentacja dziesiętna (mantiss & & wykładnik) będą wyświetlane dla wartości 0,5?

Zakres wykładnika wynosi -28 ... 0, jednak jest przechowywany (i odbierany przez parametry konstruktora) jako bezwzględna wartość 0 ... 28.

Więc 0,5 miałoby tę samą mantyskową reprezentację jak 5 z wykładnikiem -1 (zapisanym jako 1).

+0

Dajesz się zdezorientować pomiędzy wykładnikiem i mantysą w części "jeśli wykładnik jest 5-bitowy". Który dokładny bit MSDN uważasz za niedokładny? –

+0

a. Mantysa ma 96 bitów, wykładnik 5 - gdzie dokładnie pomieszałem te dwa. b. "Współczynnik skalowania jest domyślnie liczbą 10, podniesioną do wykładnika w zakresie od 0 do 28." - Nie ma wzmianki o wykładnikach ujemnych. –

+0

Więc wykładnik nie ma własnego znaku? - Skąd wiesz, czy musisz wtedy użyć E + n lub E-n? –