Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++ WinAPI]Робота с double 
V
    Опции темы
Zorak
Дата 1.2.2009, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 720
Регистрация: 13.11.2007

Репутация: нет
Всего: 3



как сделать так, что б в перменную buf типа double запоминалось число например 1,21654, а не 1,00000... вот например:
Код

double buf;
buf = (800/2-302)/70; <------ buf = 1.00000

Почему ?


--------------------
Знание - сила. А сила есть, ума не надо...
Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло.
PM MAIL ICQ   Вверх
mes
Дата 1.2.2009, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



...

Это сообщение отредактировал(а) mes - 2.2.2009, 11:27


--------------------
PM MAIL WWW   Вверх
586
Дата 1.2.2009, 21:18 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 10
Всего: 146



Код
double buf;
buf = (800.0/2.0-302.0)/70.0;

PM   Вверх
DaKedwin
Дата 1.2.2009, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 11.1.2009

Репутация: нет
Всего: нет



Можно задать тип явно:
Код

buf = (double)(800/2-302)/70;


Это сообщение отредактировал(а) DaKedwin - 1.2.2009, 21:21
PM ICQ   Вверх
586
Дата 1.2.2009, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 10
Всего: 146



DaKedwin, пока он работает с целыми числами, у него дробь теряется.
Вот другой вариант:
Код
double buf;
buf = (800.0/2-302)/70;

PM   Вверх
Фантом
Дата 1.2.2009, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: нет
Всего: 49



Цитата(Zorak @  1.2.2009,  21:07 Найти цитируемый пост)
как сделать так, что б в перменную buf типа double запоминалось число например 1,21654, а не 1,00000...


Ну, например, изучить C (или C++).  smile 

Дело в том, что при делении целого на целое (неважно, переменные это или константы) результат получается тоже целочисленным - это обычное деление с остатком. Для того, чтобы этого не происходило, хотя бы один из операндов надо сделать вещественным. Например, так:

Код

double buf;
buf = (800/2-302)/70.0;

PM   Вверх
586
Дата 1.2.2009, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 10
Всего: 146



Цитата(Фантом @  1.2.2009,  21:29 Найти цитируемый пост)
Для того, чтобы этого не происходило, хотя бы один из операндов надо сделать вещественным.
Код
double buf;
buf = (800/2-302)/70.0;

Не совсем. Выражение (800/2-302) не имеет дроби. Поэтому там можно оставить целые числа. А если там вместо 800 будет стоять 801, то результаты будут разные.
Код
int main()
{
    double a, b;
    a = (801.0/2-302)/70;
    b = (801/2-302)/70.0;

    printf("%f  %f\n", a, b);
    getchar();
    return 0;
}


1.407143  1.400000
PM   Вверх
Zorak
Дата 1.2.2009, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 720
Регистрация: 13.11.2007

Репутация: нет
Всего: 3



))Получилось) спасибо всем... использовал (double)(800/2-302)/70;

Это сообщение отредактировал(а) Zorak - 1.2.2009, 21:58


--------------------
Знание - сила. А сила есть, ума не надо...
Занимаюсь интернет бизнесом и ищу новых партнеров. Кому интересно - обращайтесь в ЛС, скайп или мыло.
PM MAIL ICQ   Вверх
Фантом
Дата 1.2.2009, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: нет
Всего: 49



Цитата(586 @  1.2.2009,  21:44 Найти цитируемый пост)
Не совсем.


Правильно, только второе предложение (про "один из операндов") шло за первым и, как следствие, относилось к общему случаю для одного деления.  smile 
PM   Вверх
GremlinProg
Дата 2.2.2009, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 3
Всего: 106



Перемещено в "С/C++ общие вопросы"


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
inside_pointer
Дата 2.2.2009, 06:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 9.3.2008

Репутация: 5
Всего: 12



Код

    a = (801.0/2-302)/70;
    b = (801/2-302)/70.0;


Код

    a = (801/2.0-302)/70;
    b = (800/2.0-302)/70;


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0538 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.