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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
DmitryM5
Love~
52 / 52 / 3
Регистрация: 27.08.2013
Сообщений: 938
Записей в блоге: 1
#1

Погрешность числа (округление) - C++

10.10.2014, 22:50. Просмотров 1319. Ответов 25
Метки нет (Все метки)

Всем привет,есть алгоритм в котором производится операция умножения часто.
В конечном итоге я получаю ответ равный 1, а верный ответ 0.9604.
Использую тип double.
Видимо происходит округление какое то.Как его избежать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2014, 22:50
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Погрешность числа (округление) (C++):

Найти погрешность числа - C++
Добрый вечер.Дана вроде простая задача,а появились проблемы.Записать число пи с 5 значащими цифрами.Нужно найти относительную погрешность...

Округление числа - C++
Кто-нибудь может подробно-подробно объяснить, как округлять числа в C++. А то я то, что причитал, ничего не понял. Вот у меня...

Округление числа - C++
Не пойму, почему компилятор пишет Выражение должно иметь целочисленный или перечисляемый тип. Код для округления числа float...

Вещественные числа и округление - C++
Или я туплю, или долго сижу, но вот никак не могу решить такую задачу: есть диапазон (напр. от 88 до 88.5), нужно в цикле обойти этот...

Округление мелкого числа до 0 - C++
Всем привет, времени мало поэтому пишу сюда суть такова - нужно сделать перемножение матриц 3х3 типа double потом вывести на экран ...

Быстрое округление числа - C++
Здравствуйте уважаемые программисты! Подскажите как быстрее всего округлить число? double a = 4.78531 необходимо получить a = 4.80000...

25
Nevermind_qqq
72 / 58 / 24
Регистрация: 25.06.2014
Сообщений: 358
10.10.2014, 23:01 #2
код бы увидеть, а то так сложно определить
1
DmitryM5
Love~
52 / 52 / 3
Регистрация: 27.08.2013
Сообщений: 938
Записей в блоге: 1
10.10.2014, 23:05  [ТС] #3
Цитата Сообщение от Nevermind_qqq Посмотреть сообщение
код бы увидеть, а то так сложно определить
Код не мал,и входного файла .txt нет,он на сайте. А сам cpp проверяется так же через сайт...
0
SlavaSSU
217 / 162 / 45
Регистрация: 17.07.2012
Сообщений: 587
10.10.2014, 23:11 #4
а что на что умножается? дабл на дабл? просто не верится что просто умножение может потерять аж 4 сотых
0
DmitryM5
Love~
52 / 52 / 3
Регистрация: 27.08.2013
Сообщений: 938
Записей в блоге: 1
10.10.2014, 23:18  [ТС] #5
Цитата Сообщение от SlavaSSU Посмотреть сообщение
а что на что умножается? дабл на дабл? просто не верится что просто умножение может потерять аж 4 сотых
double*double.

Добавлено через 2 минуты
Ну что то типо того :
C++
1
2
3
4
5
...
vector<vector<double>> gh;
...
gh[i][j] = gh[i][k] * gh[k][j];
...
Быть может есть какой то тип,еще точнее?
0
SlavaSSU
217 / 162 / 45
Регистрация: 17.07.2012
Сообщений: 587
10.10.2014, 23:25 #6
DmitryM5, флойд xD? ну лонг дабл
1
DmitryM5
Love~
52 / 52 / 3
Регистрация: 27.08.2013
Сообщений: 938
Записей в блоге: 1
10.10.2014, 23:26  [ТС] #7
Цитата Сообщение от SlavaSSU Посмотреть сообщение
DmitryM5, флойд xD? ну лонг дабл
в точку))
0
SlavaSSU
217 / 162 / 45
Регистрация: 17.07.2012
Сообщений: 587
10.10.2014, 23:30 #8
DmitryM5, а это осознанно минимум не берется при присвоении?
0
DmitryM5
Love~
52 / 52 / 3
Регистрация: 27.08.2013
Сообщений: 938
Записей в блоге: 1
10.10.2014, 23:33  [ТС] #9
Цитата Сообщение от SlavaSSU Посмотреть сообщение
DmitryM5, а это осознанно минимум не берется при присвоении?
Ну это не совсем флойд,я ищу не кратчайшие пути,а max путь..
Кусок таков:
C++
1
2
3
4
...
if (gh[i][j] < gh[i][k] * gh[k][j]) 
        gh[i][j] = gh[i][k] * gh[k][j];
...
0
SlavaSSU
217 / 162 / 45
Регистрация: 17.07.2012
Сообщений: 587
10.10.2014, 23:39 #10
DmitryM5, может лучше задачу расскажешь? тебе надо найти макс расстояния между всеми парами вершин, при этом длина пути - произведение длин ребер на нем?
0
DmitryM5
Love~
52 / 52 / 3
Регистрация: 27.08.2013
Сообщений: 938
Записей в блоге: 1
10.10.2014, 23:43  [ТС] #11
Все верно,только нужно одно максимальное расстояние от нулевой(начало) вершины до n-ой(конец).
0
SlavaSSU
217 / 162 / 45
Регистрация: 17.07.2012
Сообщений: 587
10.10.2014, 23:45 #12
DmitryM5, а до скольки веса ребер? и от скольки?
0
DmitryM5
Love~
52 / 52 / 3
Регистрация: 27.08.2013
Сообщений: 938
Записей в блоге: 1
10.10.2014, 23:46  [ТС] #13
Алгоритм верен,поскольку проходит 9/10 тестов,просто в одном происходит округление или погрешность накапливается .

Добавлено через 1 минуту
Ну 0<=weight<=и без понятия,поскольку файлы входные невидно.
0
SlavaSSU
217 / 162 / 45
Регистрация: 17.07.2012
Сообщений: 587
10.10.2014, 23:50 #14
DmitryM5, ну не знаю. там с какой точностью надо вывести ответ и как ты выводишь?
если косяков нет напиши дейкстру или поиск в ширину с обновлениями и пошли. если и они не пройдут, то дальше думать будешь
0
DmitryM5
Love~
52 / 52 / 3
Регистрация: 27.08.2013
Сообщений: 938
Записей в блоге: 1
10.10.2014, 23:54  [ТС] #15
Дейкстру писал все 10 сработали.
Разрешена погрешность при выводе в 0.01
0
10.10.2014, 23:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.10.2014, 23:54
Привет! Вот еще темы с ответами:

Округление дробового числа - C++
Здраствуйте . Нужно написать программку. У пользователя должны спросить какое число ввести надо, к примеру он введет 1.234567. Потом у...

округление числа до десятых - C++
Как округлить число до целого я знаю, s=(s-floor(s)&lt;0.5)?floor(s):ceil(v) а как округлить, скажем, число 3.4643 до 3.5 ?

Округление числа до двух цифр - C++
Привет) Я только начинаю изучать С++, и вот столкнулся с очень важным вопросом... Как мне округлить число (double) до 2х цыфр после...

Округление числа до ближайшего целого - C++
Часто видел в темах в вопросом &quot;как округлить до ближайшего целого&quot; ответы вроде &quot;использовать функцию a=floor(a+0.5); или a=round(a); ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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