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

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

Войти
Регистрация
Восстановить пароль
 
Lazzzy Panda
5 / 5 / 3
Регистрация: 27.02.2014
Сообщений: 34
Завершенные тесты: 1
#1

Убрать округление double - C++

27.02.2014, 18:20. Просмотров 1008. Ответов 10
Метки нет (Все метки)

Доброго времени суток!
Недавно начав самостоятельно изучать С++, я пыталась выполнить лабораторную работу по созданию программы для вычисления некоторой формулы. Visual Studio не ругается на код программы, что-то там считает при разных входных данных, но вот незадача: при сравнении результатов вычислений в Mathcad'е и той программе, которую я написала, эти результаты не совпадают начиная с сотых. Попыталась упростить формулу до нельзя. Все равно такой же результат. Подскажите, пожалуйста, решение моей проблемы(если оно вообще есть). (был услышан вариант, что double округляет результат, при том, что мне округлять ничего не надо, но не факт)

Код:
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
#include "stdafx.h"
#include <iostream> ;
#include <conio.h>;
#include <math.h>;
#include <locale>
using namespace std;
 
int main()
{
    setlocale(0, "");
    double m, t, c, b, f, d=0.3;
    cout << "Введите значение m=";
    cin >> m;
    cout << "Введите значение t=";
    cin >> t;
    cout << "Введите значение c=";
    cin >> c;
    cout << "Введите значение b=";
    cin >> b;
        double q = (t-1);
        double w = tan(q);
        double e = m*w;
        double y = pow(m,b);
        double u = c*sin(t);
        double o = fabs(u/y);
    v = e+o;
    f = pow(v, d);
    cout << "f = " << f;
    _getch();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Catstail
Модератор
22309 / 10714 / 1742
Регистрация: 12.02.2012
Сообщений: 17,788
27.02.2014, 18:28     Убрать округление double #2
Округляет не double... Округляет cout при печати!
Тамика
Котовчанин
869 / 449 / 141
Регистрация: 16.02.2010
Сообщений: 2,835
Записей в блоге: 27
27.02.2014, 18:34     Убрать округление double #3
Тут спасут
C++
1
std::setprecision(20) << std::fixed

Вместо 20 - это я использовала. Можете увеличить точность.
Catstail
Модератор
22309 / 10714 / 1742
Регистрация: 12.02.2012
Сообщений: 17,788
27.02.2014, 18:39     Убрать округление double #4
Вот так можно задать бОльшее число цифр после точки:

C++
1
cout << setprecision(15) << 1.0/3.0 << endl;
только не забудь подключить:

C++
1
#include <iomanip.h>
Croessmah
Модератор
Эксперт CЭксперт С++
12882 / 7268 / 810
Регистрация: 27.09.2012
Сообщений: 17,958
Записей в блоге: 2
Завершенные тесты: 1
27.02.2014, 18:40     Убрать округление double #5
Цитата Сообщение от Catstail Посмотреть сообщение
только не забудь подключить:
ну судя по тому, что используется <iostream>, то подключать нужно <iomanip>
Catstail
Модератор
22309 / 10714 / 1742
Регистрация: 12.02.2012
Сообщений: 17,788
27.02.2014, 18:52     Убрать округление double #6
Цитата Сообщение от Croessmah Посмотреть сообщение
то подключать нужно <iomanip>
- я так и написал.
Croessmah
Модератор
Эксперт CЭксперт С++
12882 / 7268 / 810
Регистрация: 27.09.2012
Сообщений: 17,958
Записей в блоге: 2
Завершенные тесты: 1
27.02.2014, 18:57     Убрать округление double #7
Цитата Сообщение от Catstail Посмотреть сообщение
- я так и написал.
у вас <iomanip.h>, а он устарел
Lazzzy Panda
5 / 5 / 3
Регистрация: 27.02.2014
Сообщений: 34
Завершенные тесты: 1
28.02.2014, 03:57  [ТС]     Убрать округление double #8
Catstail, спасибо, что просвещаете незнающих)
Спасибо, за ответы, я опробую их в деле =)
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
28.02.2014, 11:02     Убрать округление double #9
Цитата Сообщение от Тамика Посмотреть сообщение
std::setprecision(20)
А вы про машинный "0" не забыли?
Catstail
Модератор
22309 / 10714 / 1742
Регистрация: 12.02.2012
Сообщений: 17,788
28.02.2014, 12:25     Убрать округление double #10
Цитата Сообщение от mustimur Посмотреть сообщение
А вы про машинный "0" не забыли?
- я об этом никогда не забываю - у меня (15)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2014, 13:55     Убрать округление double
Еще ссылки по теме:

Как убрать округление? C++
C++ Как убрать округление косинуса в программе
Округление Double C++
C++ Форматирование вывода и округление double
Исправить ошибки "cannot convert 'double (*)(double)' to 'double'" и "too many arguments to function" C++

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

Или воспользуйтесь поиском по форуму:
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
28.02.2014, 13:55     Убрать округление double #11
Catstail, Я не про Вас, у Вас все в порядке
Yandex
Объявления
28.02.2014, 13:55     Убрать округление double
Ответ Создать тему
Опции темы

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