Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Олимпиады

Страница: 1 |

 

  Вопрос: Числа с плавающей запятой Добавлено: 23.01.09 01:09  

Автор вопроса:  ZoomerSD | ICQ: 148640473 
Подскажите, такая задачка:
Как вычислить максимально возможное нормализованное значение числа с плавающей точкой которое можно поместить в 32 битное слово. Конечный результат должен быть 3,4*10^38. Но мне надо сам процесс его получения.

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Father



Вопросов: 0
Ответов: 159
 Профиль | | #1 Добавлено: 23.01.09 03:38
Ну, есть стандарт IEEE754 для чисел с плав. точкой.
Все биты подробно расписаны.
Но получить из них число в десятичном представлении, не пользуясь готовыми функциями (типа printf) врагу не пожелаю)



Ответить

Номер ответа: 2
Автор ответа:
 Father



Вопросов: 0
Ответов: 159
 Профиль | | #2 Добавлено: 23.01.09 07:27
P/S
Кстати, если выставить все биты в единицу
кроме старшего 31-го (знак числа) и 23-го (знак экспоненты),
то максимально возможное = 3.4028235E38

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 23.01.09 16:55
Пусть бит под знак 1, под мантиссу a, под экспоненту b, a + b + 1 = 32. Тогда экспонента может принимать значения до 2^b-1, нормализованная мантисса состоит из a единиц и равна 1.1...1, где после точки a единиц. Таким образом, максимально точно представимое число равно
f := (a, b) -> 2^(2^b-1) + sum(2^((2^b-1)-i), i=1..a);
В частности для float
> f(23, 7);
340282346638528859811704183484516925440

Ответить

Страница: 1 |

Поиск по форуму





© Copyright 2002-2011 VBNet.RU | Пишите нам