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

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

Войти
Регистрация
Восстановить пароль
 
Donville
0 / 0 / 0
Регистрация: 16.02.2014
Сообщений: 112
#1

Уборка мусора из double - C++

31.05.2014, 22:36. Просмотров 454. Ответов 9
Метки нет (Все метки)

Подскажите, как убрать мусор из числа типа double. Например число 13 на самом деле не 13, а 13.00000001.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2014, 22:36     Уборка мусора из double
Посмотрите здесь:

C++ invalid operands of types ‘double*’ and ‘double’ to binary ‘operator*’
Какая-нибудь реализация функции void Fun (double in, double *out) C++
C++ Объяснить, что это значит double *F; F=new double[n];
C++ Ошибка: error LNK2001: unresolved external symbol "double __cdecl Akk(double,double,double)"
C++ long double и double в MSVC 12 одно и тоже, нужна информация,желательно быстрей
C++ std::copy из vector<double> в *double, непонятный warning
C++ Вывести long double число без перевода в double
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12534 / 7096 / 797
Регистрация: 27.09.2012
Сообщений: 17,508
Записей в блоге: 2
Завершенные тесты: 1
31.05.2014, 22:37     Уборка мусора из double #2
Цитата Сообщение от Donville Посмотреть сообщение
Например число 13 на самом деле не 13, а 13.00000001.
Представление вещественных чисел "на пальцах"
Voivoid
 Аватар для Voivoid
594 / 270 / 12
Регистрация: 31.03.2013
Сообщений: 1,331
31.05.2014, 22:43     Уборка мусора из double #3
Лол, я уж сначала подумал, что сейчас что-нибудь новенькое про garbage collection почитаю
Psilon
Master of Orion
 Аватар для Psilon
5763 / 4711 / 622
Регистрация: 10.07.2011
Сообщений: 14,190
Записей в блоге: 5
Завершенные тесты: 4
31.05.2014, 22:51     Уборка мусора из double #4
Donville,
английский вариант: http://docs.oracle.com/cd/E19957-01/..._goldberg.html
русский вариант: http://habrahabr.ru/post/112953/

Добавлено через 35 секунд
Voivoid, к сожалению, в языках с GC double все равно не убирается сборщиком
Tulosba
:)
Эксперт С++
4384 / 3227 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
31.05.2014, 23:11     Уборка мусора из double #5
Цитата Сообщение от Psilon Посмотреть сообщение
в языках с GC double все равно не убирается сборщиком
C++
1
double^ d = gcnew double(42);//C++ CLI
Кто будет освобождать память по-Вашему?
Donville
0 / 0 / 0
Регистрация: 16.02.2014
Сообщений: 112
31.05.2014, 23:32  [ТС]     Уборка мусора из double #6
То есть если у меня есть цикл, например, while (x1<=x2), то его нужно заменить так: while(fabs(x2-x1)>=0.0001)?
Psilon
Master of Orion
 Аватар для Psilon
5763 / 4711 / 622
Регистрация: 10.07.2011
Сообщений: 14,190
Записей в блоге: 5
Завершенные тесты: 4
01.06.2014, 00:26     Уборка мусора из double #7
Tulosba, double является псевдонимом System.Double, являющегося структурой, следовательно gcnew по барабану, при выходе из области видимости структуры автоматически удаляются.

Добавлено через 2 минуты
Donville, нет, сравнение с эпислон нужно заменять вместо x1 == x2. А меньше и больше можно использовать как обычно.
Tulosba
:)
Эксперт С++
4384 / 3227 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
01.06.2014, 00:38     Уборка мусора из double #8
Цитата Сообщение от Psilon Посмотреть сообщение
double является псевдонимом System.Double, являющегося структурой, следовательно gcnew по барабану, при выходе из области видимости структуры автоматически удаляются.
Неужели? А здесь что будет тогда при выходе из функции?
C++
1
2
3
4
5
double^ f()
{
    double^ d = gcnew double(42);
    return d;
}
Donville
0 / 0 / 0
Регистрация: 16.02.2014
Сообщений: 112
01.06.2014, 01:25  [ТС]     Уборка мусора из double #9
Psilon, у меня просто теряется одна итерация. На последнем проходе цикла у меня x1 = 12.00000001, a x2 = 13 пользователь задает сам.

Добавлено через 17 минут
Это как пример.

Добавлено через 8 минут
C++
1
2
3
4
5
6
7
8
9
10
11
...
cout << "Bbedute x1"<<endl;
cin >> x1;
cout << "Bbedute x2"<<endl;
cin >> x2;
cout << "Bbedute shag"<<endl;
cin >> sh;
while (x1<=x2)
{
    x1 = x1+sh;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2014, 04:08     Уборка мусора из double
Еще ссылки по теме:

Почему перестает работать программа при замене double на long double? C++
Преобразовать 2 числа int в 1 число float(double) | double int1.int2 C++
Почему мы пишем double x (double y)? а не через запятую double x,y C++
C++ Error: invalid types 'double [10][10][double]' for array subscript
Исправить ошибки "cannot convert 'double (*)(double)' to 'double'" и "too many arguments to function" C++

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

Или воспользуйтесь поиском по форуму:
Psilon
Master of Orion
 Аватар для Psilon
5763 / 4711 / 622
Регистрация: 10.07.2011
Сообщений: 14,190
Записей в блоге: 5
Завершенные тесты: 4
01.06.2014, 04:08     Уборка мусора из double #10
Tulosba, 42 же.

Вообще по CLI я не сильно большой спец, но вот .Net неплохо знаю. При любых обстоятельствах структура уничтожается, а если возвращается, то копируется по значению, то есть возвращается копия.

Добавлено через 1 час 59 минут
Tulosba, а вообще
http://developerslife.ru/256
Yandex
Объявления
01.06.2014, 04:08     Уборка мусора из double
Ответ Создать тему
Опции темы

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