Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
Саааня
0 / 0 / 0
Регистрация: 10.08.2011
Сообщений: 9
#1

DWORD to double - C++

18.08.2011, 13:31. Просмотров 1745. Ответов 8
Метки нет (Все метки)

нарисовалась такая проблемка - не могу корректно привести число типа DWORD к числу типа double
если кто знает-подскажите как это правильно сделать
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2011, 13:31     DWORD to double
Посмотрите здесь:

String to DWORD - C++
Есть адрес переменной в виде (0x7515A0FA), хранящийся в переменной string. Как переделать в DWORD?

Из DWORD в BYTE - C++
Доброе время суток! Как конвертировать DWORD в BYTE? DWORD dwL; BYTE *pb;

DWORD не инициализируется - C++
Пишу в Visual Studio 2008 #include "stdafx.h" #include <windows.h> #include <iostream> #include <process.h> В функции ошибка:...

Преобразование DWORD в string - C++
DWORD to string как сделать, гугл не помог) если что консоль visual studio c++

Вытащить байт из dword - C++
Есть массив, в цикле из него берутся и пишутся данные, непоследовательно. Массив int-ов. 1. Как разложить dword на байты (какой способ...

Функция преобразования Dword to String - C++
Доброго дня, помогите пожалуйста с ф-цией под делфи. Есть поступление пакетов через сокет, структура вот такая: struct SSendBlk { ...

Как в BYTE записать DWORD - C++
Здравствуйте! Подскажите, пожалуйста, как в BYTE *b; b = new BYTE; записать с byte размером 4 байта DWORD значение

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Евгений М.
1034 / 975 / 53
Регистрация: 28.02.2010
Сообщений: 2,821
Завершенные тесты: 2
18.08.2011, 13:39     DWORD to double #2
Так пробовали?
C++
1
2
DWORD i = 2;
double r = 1.*i;
Иван СВ
7 / 7 / 0
Регистрация: 17.08.2011
Сообщений: 19
18.08.2011, 13:40     DWORD to double #3
Саааня,
попробуй так:
C++
1
2
3
4
DWORD a = 0xff;
double b = 0.0;
 
b = 1.0 * a;
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
18.08.2011, 13:41     DWORD to double #4
А в чём проблема-то? Обычное явное преобразование вроде
C
1
(double)val;
или
C++
1
static_cast<double>(val);
чем не подходят? Что значит корректно?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
18.08.2011, 13:57     DWORD to double #5
С каких пор DWORD перестал умещаться в double?
Саааня
0 / 0 / 0
Регистрация: 10.08.2011
Сообщений: 9
18.08.2011, 14:35  [ТС]     DWORD to double #6
чего-т я ничего не пойму
число 0x3ff00000 по идее должно представляться в double как 1.0,так?
но почему-то ни один из способов не подходит
Евгений М.
1034 / 975 / 53
Регистрация: 28.02.2010
Сообщений: 2,821
Завершенные тесты: 2
18.08.2011, 14:38     DWORD to double #7
DWORD в Вашем случае - это представление числа с плавающей точкой? Если да, то попробуйте float.

Цитата Сообщение от Саааня Посмотреть сообщение
double как 1.0,так?
Без понятия.
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
18.08.2011, 14:46     DWORD to double #8
Цитата Сообщение от Саааня Посмотреть сообщение
число 0x3ff00000 по идее должно представляться в double как 1.0,так?
Нет конечно же. Но если надо DWORD интерпретировать как double, то можно воспользоваться указателями или лучше объединением. Только DWORD 32-битный, так что ему больше подойдёт float, а не double.

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
 
#ifndef DWORD
#define DWORD unsigned int
#endif
 
union dw2dbl
{
    double dbl;
    DWORD dw[2];
};
 
union dw2flt
{
    float flt;
    DWORD dw;
};
 
int main()
{
    dw2dbl cnv1;
    dw2flt cnv2;
 
    cnv1.dw[0] = 0;
    cnv1.dw[1] = 0x3ff00000;
 
    cnv2.dw = 0x3ff00000;
 
    std::cout << "to double: " << cnv1.dbl << std::endl;
    std::cout << "to float: " << cnv2.flt << std::endl;
 
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.08.2011, 14:58     DWORD to double
Еще ссылки по теме:

Записать в строку LARGE_INTEGER и DWORD - C++
Как вывести в строчке их значение? На данный момент выводятся кракозябрами. Я понял, что они из нескольких байт состоят. Ну так...

Шестнадцатеричный вывод WORD и DWORD в поток без приведения к указателю - C++
Как сделать? Есть ли для этого потоковый манипулятор? Желательно, чтоб цифры A-F были в верхнем регистре и выводились старшие не значащие...

double - C++
Если преобразовать double к char*, то какие байты будут отвечать за целую часть, а какие за дробную?

double - C++
double s = (1 / 5); cout &lt;&lt; s; в моём понимании он должен вывести 0.2 ну или что-то типо того. Но выводит 0... Чё то я не понимаю...

Double - C++
чтото тут не так, не выдает ошибку но пишет -175756757567657 вот код double z; z=10,3; printf(&quot;%d&quot;, z); делаю по...


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

Или воспользуйтесь поиском по форуму:
Саааня
0 / 0 / 0
Регистрация: 10.08.2011
Сообщений: 9
18.08.2011, 14:58  [ТС]     DWORD to double #9
grizlik78, спасибо,теперь заработало как надо)
Yandex
Объявления
18.08.2011, 14:58     DWORD to double
Ответ Создать тему
Опции темы

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