Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
 Аватар для MAnton
25 / 25 / 5
Регистрация: 21.04.2011
Сообщений: 141

Операции с типом double

16.07.2012, 15:34. Показов 3903. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++ (Qt)
1
2
3
4
5
    double h=0.005;
    double T=0.2;
    double tN=0.3;
    int Nt=(tN-T)/h;
    cout<<"Nt "<<Nt<<endl;
На экран выводится 19, при h=0.0005 выводит 199. Куда делась единица?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.07.2012, 15:34
Ответы с готовыми решениями:

Может ли переменная-счетчик быть типом Double
Может ли быть счетчик оператора for, while и т. д. ( у меня это FR1 и массив MFR) задан типом данных double ? У меня ругается и только int...

Как написать функцию c типом long double возвращаюшую тип shot?
Мне бы какой нибудь тривиальный пример в Си. Спасибо:)

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

9
 Аватар для Fooly
21 / 17 / 4
Регистрация: 26.03.2012
Сообщений: 147
16.07.2012, 15:49
Так будет работать правильно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
int main()
{
    double h=0.005;
    double T =0.2;
    double tN=0.3;
    int Nt=tN/h-T/h;
    cout<<"Nt "<<Nt<<endl;
    for (int i=0; i<100; i++)
        cin.get();
    return 0;
}
1
 Аватар для DiffEreD
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
16.07.2012, 15:52
Правильный компилятор должен вас предупредить: warning C4244: инициализация: преобразование "double" в "int", возможна потеря данных
0
 Аватар для MAnton
25 / 25 / 5
Регистрация: 21.04.2011
Сообщений: 141
16.07.2012, 15:58  [ТС]
Да точно, предупреждение было, теперь правильно работает.
Только я не понял чем отличается запись (tN-t)/h от tN/h-t/h
0
 Аватар для Fooly
21 / 17 / 4
Регистрация: 26.03.2012
Сообщений: 147
16.07.2012, 16:01
Ёлки-палки, если приводить double к int, значение уменьшается на 1 А почему так? Ведь Nt получается равным 20, а Ht уже 19. Интересненько...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
int main()
{
    double h=0.005;
    double T =0.2;
    double tN=0.3;
    double Nt=(tN-T)/h;
    int Ht =(int) Nt;
    cout<<Nt << " " <<Ht<<endl;
    for (int i=0; i<100; i++)
        cin.get();
    return 0;
}
Добавлено через 1 минуту
Цитата Сообщение от MAnton Посмотреть сообщение
Да точно, предупреждение было, теперь правильно работает.
Только я не понял чем отличается запись (tN-t)/h от tN/h-t/h
Это получилось методом тыка, почему так работает, а по старой схеме нет - я не знаю
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
16.07.2012, 16:11
Цитата Сообщение от Fooly Посмотреть сообщение
C++
1
2
3
for (int i=0; i<100; i++)
 cin.get();
 return 0;
ЛОЛ што?
0
 Аватар для Fooly
21 / 17 / 4
Регистрация: 26.03.2012
Сообщений: 147
16.07.2012, 16:20
Цитата Сообщение от Deviaphan Посмотреть сообщение
ЛОЛ што?
У меня при нажатии Enter консоль закрывается, таким способом я борюсь с этим Наверное можно использовать system("pause"), но я привык уже так. Я только начал читать книжки по с++, поэтому не знаю нюансов, как-то приходится выкручиваться, хоть и через попу всё выходит
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
16.07.2012, 16:21
Цитата Сообщение от Fooly Посмотреть сообщение
Ёлки-палки, если приводить double к int, значение уменьшается на 1 А почему так? Ведь Nt получается равным 20, а Ht уже 19. Интересненько...
Все довольно тривиально. Причина в конечной точности представления чисел с плавающей точкой в компьютере.

Не проверял, но по-видимому, в результате вычисления получается величина похожая на 19.99999..... - с точки зрения человека это "почти 20", но с точки зрения компьютера - до ровно 20 все-таки не дотягивает, и при преобразовании к int дробная часть будет отброшена, поэтому и получен законный результат 19.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
16.07.2012, 16:21
Тогда хотя бы cin.get();cin.get();
0
 Аватар для Fooly
21 / 17 / 4
Регистрация: 26.03.2012
Сообщений: 147
16.07.2012, 16:26
Цитата Сообщение от CheshireCat Посмотреть сообщение
Все довольно тривиально. Причина в конечной точности представления чисел с плавающей точкой в компьютере.

Не проверял, но по-видимому, в результате вычисления получается величина похожая на 19.99999..... - с точки зрения человека это "почти 20", но с точки зрения компьютера - до ровно 20 все-таки не дотягивает, и при преобразовании к int дробная часть будет отброшена, поэтому и получен законный результат 19.
Но программа выводит Nt=20, а не 19.(9). А Nt это же double, должно было бы выводить 19.(9)

Добавлено через 1 минуту
Цитата Сообщение от Deviaphan Посмотреть сообщение
Тогда хотя бы cin.get();cin.get();
В таком случае консоль закрывается после 2 нажатий, а в моём только после 100 А в задачках из книги нужно больше, чем 2 нажатия

Добавлено через 10 секунд
Цитата Сообщение от Deviaphan Посмотреть сообщение
Тогда хотя бы cin.get();cin.get();
В таком случае консоль закрывается после 2 нажатий, а в моём только после 100 А в задачках из книги нужно больше, чем 2 нажатия
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.07.2012, 16:26
Помогаю со студенческими работами здесь

Доступны ли побитовые операции с unsigned char типом (одно-байтовой переменной) без неявного приведения к INT
Отказавшись от bitset мне удалось ускорить работу программы примерно в 2,25 раза Вот её код (ребят cyberforum.ru - не сохраняет оригинал...

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

В чем разница между типом функции и типом возвращаемого значения?
Читаю статью https:// code-live. ru/post/cpp-functions/ (ссылку изменил дабы не делать рекламу) Там написано - Любая функция...

Арифметические операции с типом double и непонятная погрешность
Столкнулся с такой проблемой: у меня идет цикл с переменной типа double for (double j = bottom; j &lt; top; j += step) { ...

Происходит добавление маленького числа к результату с типом Double
Здравствуйте! При сложении двух чисел типа double иногда происходит добавление очень малого числа к результату. Пример: double a =...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru