Вопрос по .net, c# – десятичное в c # недоразумение?

10

(while trying to analyze how decimal works ) && after reading @jonskeet статья  и видяMSDN и думать последние 4 часа, I have some questions :

вэта ссылка они говорят что-то очень простое:

1.5 x 10^2 имеет2 значимые фигуры

1.50 x 10^2 имеет3 значимые фигуры.

1.500 x 10^2 имеет4 значимые фигуры и т.д ...

хорошо ... мы поняли идею.

from jon's article :

 sign * mantissa / 10^exponent

As usual, the sign is just a single bit, but there are 96 bits of mantissa and 5 bits of exponent

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

 1 _                     96                         5

Хорошо

так максmantiss val =2^96-1 = 79228162514264337593543950335 который :7.9228162514264*10^28 (according to my iphone... could'nt see exponent representation in windows calc.)

уведомление:

7.9228162514264*10^28 имеет14 значимые цифры (в соответствии с примерами выше)

Теперь часть с 5-битным показателем степени не имеет значения, потому что его вdenominator - так что мне нужно минимальное значение, которое составляет 2 ^ 0

question #1 :

MSDN сказать:enter image description here 28-29 significant digits

но по моему образцу (1.500 x 10^2 has 4 significant figures) у них есть2   значительные цифры, которые7.9 (7 и 9).

если бы msdn написал бы:

±79228162514264337593543950335 × 10^0

я бы понял это, так как все значащие цифрыin the expression.

why do they write 28-29 but display 2 ?

question #2 :

как будет отображаться десятичное представление (mantiss & amp; ampon экспонента) для значения 0,5?

the max denominator can be 2^32-1 --> 31

Спасибо, парни.

question #3 :

1 + 96 + 5 = 102 бита.

MSDN говорит:

The decimal keyword denotes a 128-bit data type.

128-102 = 26

может понять из статьи, почему нет использования этих 26 бит

Ваш Ответ

2   ответа
3

why do they write 28-29 but display 2?

Для удобства чтения. Там написано «Приблизительный диапазон». и 7.9E28 более читабелен, чем 79228162514264337593543950335 (здесь E0, а не E1).

how will decimal representation ( mantiss && exponent) will be displayed for the value 0.5 ?

Диапазон показателя равен -28 ... 0, однако он сохраняется (и принимается через параметры конструктора) как абсолютное значение 0 ... 28.

Таким образом, 0.5 будет иметь то же представление мантиссы, что и 5, с показателем степени -1 (хранится как 1).

Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededdecimalError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededusedError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
7

Они далиrange только две значащие цифры, но указалиprecision по отдельности. Вот почему диапазон указан как «приблизительный диапазон».

decimal представление 0,5 было бы мантиссой 5 и показателем степени 1 (что рассматривается в обратном смысле по отношению к нормальному, т.е.effectively -1).

Error: User Rate Limit Exceeded Royi Namir
Error: User Rate Limit Exceeded Royi Namir
Error: User Rate Limit ExceededexponentError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Royi Namir

Похожие вопросы