2012-05-16 3 views
10

(пытаясь проанализировать, как decimal работы) & & после прочтения @jonskeet article и видеть msdn, и думать за последние 4 часа, У меня есть несколько вопросов:десятичный в C# непонимание?

в this link они говорят что-то очень простое:

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

1.50 x 10^2 имеет 3 значительное цифры.

1.500 x 10^2 имеет 4 значащих цифр и т.д. ...

ок ... мы получаем идею.

из статьи Йона:

sign * mantissa/10^exponent 

Как обычно, знак только один бит, но есть 96 бит мантиссы и 5 бит экспоненты

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

1 _      96       5 

ОК

так макс mantiss вал = 2^96-1 = 79228162514264337593543950335 который: 7.9228162514264*10^28(. по моему Iphone ... could'nt см экспоненту представление в окнах известково)

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

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

теперь часть с 5-битным индексом не имеет значения, потому что ее значение в значении - так что мне нужен min val, который равен 2^0

вопрос № 1:

MSDN говорят: enter image description here28-29 significant digits

, но по моему образцу (1.500 x 10^2 имеет 4 значащие цифры) они имеют значащих цифр, который является 7.9 (7 и 9).

если бы MSDN написано:

±79228162514264337593543950335 × 10^0 

я бы это понять, поскольку все значимые цифры в выражении.

Почему они пишут 28-29, но отображают 2?

вопрос № 2:

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

максимальный знаменатель может быть 2^32-1 --> 31

спасибо, ребята.

вопрос № 3:

1 + 96 + 5 = 102 бит.

говорит MSDN:

Десятичный ключевое слово обозначает тип данных 128-битный.

128-102 = 26 

может understnad из статьи, почему там не обычай к этому 26 биту

ответ

7

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

decimal представление 0.5 будет мантисса 5, и показатель степени 1 (который рассматривается в обратном смысле к нормальному, т.е. это эффективно -1).

+0

mantiss of 5 означает (2^5)/(1 * 10^1) - это не 0,5 ...... –

+0

@RoyiNamir: Нет, мантисса - 5. Что заставило вас думать, что у него есть что-нибудь делать с 2^5? Я подозреваю, вы неправильно поняли, что такое мантисса. –

+0

oh sorry ... :) после 4 часов поиска im мышления в базе 2 :) –

3

Почему они пишут 28-29, но отображают 2?

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

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

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

So 0.5 Имеет то же представление мантиссы как 5 с показателем -1 (хранится как 1).

+0

Вы получаете путаницу между экспонентой и мантиссой в части «если показатель составляет 5 бит». Какой именно бит MSDN вы считаете неточным? –

+0

a. Мантисса - 96 бит, показатель 5 - где именно я смутил их. б. «Масштабирующий коэффициент неявно равен числу 10, поднятому до показателя степени от 0 до 28.» - Нет упоминаний об отрицательных показателях. –

+0

Значит, у экспонента нет собственного знака? - Откуда вы знаете, если вам нужно использовать E + n или E-n? –

Смежные вопросы