Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
taras atavin
4204 / 1765 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
#1

Дайте денормализованное число типа double

31.12.2014, 15:07. Просмотров 589. Ответов 11
Метки нет (Все метки)

Нужно для текста, число надо разобрать на мантиссу и порядок и снова собрать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.12.2014, 15:07
Ответы с готовыми решениями:

Как из 4-х байт, составляющих число типа double, получить это число?
Как из 4-х байт, составляющих число типа double, получить это число? Пример:...

Разбить число типа double на 2 числа
Добрый день! Попалась мне такая задача - есть 2 интовые переменные, есть число...

Аргумент типа double несовместим с параметром типа double*
Функция function должна возвращать количество элементов массива, значение...

Аргумент типа double несовместим с параметром типа double
#include <iostream> #include <cmath> #include <math.h> using namespace std;...

Проверить, является ли число, записанное в переменную типа Double, иррациональным
Помогите. Нужно узнать, целое ли записанное в переменную double число, или же...

11
alptp
5 / 5 / 6
Регистрация: 15.10.2014
Сообщений: 18
31.12.2014, 19:17 #2
Десятичное число 155,625
Это число в нормализованном экспоненциальном виде : 1,55625∙10+2=1,55625∙exp10+2
Число 1,55625∙exp10+2 состоит из двух частей: мантиссы M=1.55625 и экспоненты exp10=+2
Если мантисса находится в диапазоне 1<=M<10, то число считается нормализованным.
Экспонента представлена основанием системы исчисления (в данном случае 10) и порядком (в данном случае +2).
Порядок экспоненты может иметь отрицательное значение, например число 0,0155625=1,55625∙exp10-2.

Это число в денормализованном экспоненциальном виде : 0,155625∙10+3=0,155625∙exp10+3
Число 0,155625∙exp10+3 состоит из двух частей: мантиссы M=0,155625 и экспоненты exp10=+3
Если мантисса находится в диапазоне 0,1<=M<1, то число считается денормализованным.
Экспонента представлена основанием системы исчисления (в данном случае 10) и порядком (в данном случае +3).
Порядок экспоненты может иметь отрицательное значение, например число 0,0155625=0,155625∙exp10-3.
2
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7045 / 3346 / 452
Регистрация: 04.12.2011
Сообщений: 9,304
Записей в блоге: 5
01.01.2015, 00:55 #3
Cmath/math.h
double frexp(double, int&)
http://www.cplusplus.com/reference/cmath/frexp/
С новым годом.
0
taras atavin
4204 / 1765 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
01.01.2015, 07:51  [ТС] #4
Цитата Сообщение от alptp Посмотреть сообщение
0,0155625=1,55625∙exp10-2.
Это число в денормализованном экспоненциальном виде : 0,155625∙10+3=0,155625∙exp10+3
Ничего подобного. В double это число представляется как http://www.cyberforum.ru/cgi-bin/latex.cgi?1.2158203125*2^7, что вполне нормализовано.

Добавлено через 53 секунды
Цитата Сообщение от alptp Посмотреть сообщение
Если мантисса находится в диапазоне 0,1<=M<1, то число считается денормализованным.
Вообще то от ноля и оба неравенства строгие.

Добавлено через 1 минуту
Цитата Сообщение от IGPIGP Посмотреть сообщение
http://www.cplusplus.com/reference/cmath/frexp/
Ничего не понял.
0
Somebody
2799 / 1610 / 251
Регистрация: 03.12.2007
Сообщений: 4,213
Завершенные тесты: 3
01.01.2015, 11:44 #5
Денормализованное IEEE 754 double - у которого порядок - минус 1023, например 0x1p-1023 (0x0008000000000000).
0
taras atavin
4204 / 1765 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
01.01.2015, 11:45  [ТС] #6
Цитата Сообщение от Somebody Посмотреть сообщение
например 0x1p-1023
Не распарсил запись.
0
Somebody
2799 / 1610 / 251
Регистрация: 03.12.2007
Сообщений: 4,213
Завершенные тесты: 3
01.01.2015, 11:57 #7
В C11 можно так вещественные числа писать.
1 * 2^(-1023)
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7045 / 3346 / 452
Регистрация: 04.12.2011
Сообщений: 9,304
Записей в блоге: 5
01.01.2015, 13:50 #8
Цитата Сообщение от taras atavin Посмотреть сообщение
Нужно для текста, число надо разобрать на мантиссу и порядок и снова собрать.
Цитата Сообщение от taras atavin Посмотреть сообщение
Ничего не понял.
это:
Цитата Сообщение от IGPIGP Посмотреть сообщение
double frexp(double, int *)
как разобрать на:
Цитата Сообщение от Somebody Посмотреть сообщение
... * 2^...
Что касается "собрать" то тут уже я не понял. Чем запись mant*2^ не устраивает? Можно в автомастерскую сдать, но там потеряют детали.
0
taras atavin
4204 / 1765 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
01.01.2015, 14:45  [ТС] #9
Цитата Сообщение от Somebody Посмотреть сообщение
1 * 2^(-1023)
Так бы и писал 1e-1023.
0
Somebody
2799 / 1610 / 251
Регистрация: 03.12.2007
Сообщений: 4,213
Завершенные тесты: 3
01.01.2015, 17:59 #10
Цитата Сообщение от taras atavin Посмотреть сообщение
Так бы и писал 1e-1023.
Под 1e-1023 обычно понимается 10^-1023, а не на 2^-1023.
0
taras atavin
4204 / 1765 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
01.01.2015, 18:03  [ТС] #11
Цитата Сообщение от Somebody Посмотреть сообщение
Под 1e-1023 обычно понимается 10^-1023, а не на 2^-1023.
А, ну да, прогнал. А что там означает двойку?

Добавлено через 1 минуту
Цитата Сообщение от IGPIGP Посмотреть сообщение
Что касается "собрать" то тут уже я не понял.
Ну собрать. Есть два отдельных данных, из них надо получить double.
0
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
7045 / 3346 / 452
Регистрация: 04.12.2011
Сообщений: 9,304
Записей в блоге: 5
01.01.2015, 21:23 #12
Цитата Сообщение от taras atavin Посмотреть сообщение
Есть два отдельных данных, из них надо получить double.
Если есть запись a*2^b то это набор операций и значит возвращается значение. Присвоив его переменной типа double получится double. Вполне приличной сборки, имхо.
0
01.01.2015, 21:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.01.2015, 21:23

Как разделить переменую типа double на целое и дробное число ?
Как разделить переменую типа double на целое и дробное число ? Добавлено...

Как считывать только одно число типа double за один проход
Теперь измените тело цикла так, чтобы он считывал только одно число типа ...

Написать функцию, формирующую на базе исходной строки число типа Double
ребята программисты, помогите. Дана строка, содержащая число с десятичной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru