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

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

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

DWORD to double - C++

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

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

Ошибки error C2296: -: недопустимо, левый операнд имеет тип "double (__cdecl *)(double,double,double - C++
Думаю из-за polp #include<iostream> #include<cmath> #include<cstdlib> using namespace std; double polp(double af,double...

Ошибка: error LNK2001: unresolved external symbol "double __cdecl Akk(double,double,double)" - C++
#include <iostream> #include <cmath> using namespace std; double Akk(double x, double y, double z); int main() { int a, b, c; ...

Почему мы пишем double x (double y)? а не через запятую double x,y - C++
почему мы пишем double x (double y)? а не через запятую double x,y

Исправить ошибки "cannot convert 'double (*)(double)' to 'double'" и "too many arguments to function" - C++
пожалуйста проверьте и помогите исправить ошибки: #include<iostream> #include<stdio.h> #include<math.h> #include<stdlib.h> ...

Почему перестает работать программа при замене double на long double? - C++
Здравствуйте! Прошу помощи чтобы разобраться в следующем вопросе: Нашел программу в интернете, запустил - все работает, но когда решил...

Преобразовать 2 числа int в 1 число float(double) | double int1.int2 - C++
Всем привет. Изучая азы C++, столкнулся с такой проблемой. Есть два значения типа int, их необходимо преобразовать в одно значение типа...

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

Цитата Сообщение от Саааня Посмотреть сообщение
double как 1.0,так?
Без понятия.
0
grizlik78
Эксперт С++
1911 / 1443 / 112
Регистрация: 29.05.2011
Сообщений: 3,000
18.08.2011, 14:46 #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;
}
0
Саааня
0 / 0 / 0
Регистрация: 10.08.2011
Сообщений: 9
18.08.2011, 14:58  [ТС] #9
grizlik78, спасибо,теперь заработало как надо)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.08.2011, 14:58
Привет! Вот еще темы с ответами:

Какая-нибудь реализация функции void Fun (double in, double *out) - C++
Подскажите, пожалуйста, какую-нибудь любую реализацию прототипа функции: void Fun (double in, double *out)

long double и double в MSVC 12 одно и тоже, нужна информация,желательно быстрей - C++
Здравствуйте все знают что в VC long double и double одно и тоже, да и при простой проверке это легко выясняется, но нужна информация от...

invalid operands of types ‘double*’ and ‘double’ to binary ‘operator*’ - C++
#include &quot;mpi.h&quot; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;math.h&gt; #define count 120 int main(int argc,char *argv) { ...

Error: invalid types 'double [10][10][double]' for array subscript - C++
В 20 21 и 23 строках выдает ошибку error: invalid types 'double ' for array subscript #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.08.2011, 14:58
Ответ Создать тему
Опции темы

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