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

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

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

Вывести ответ с заданной точностью - C++

20.10.2016, 13:47. Просмотров 210. Ответов 11
Метки нет (Все метки)

Привет! Зачастил я тут ;(
В общем, не могли бы помочь?
Требуется сделать вывод ответа с точностью до 10^(-9), например:

Output:
4.0

Output:
1.5

Output:
2.714285714

Единственное, что придумал:
C++
1
2
3
4
5
6
7
8
9
10
    double x = sum/count;
    bool isInt=((x/1000)==0);
    if(isInt == true)
    {
        cout << sum/count<<".0"<<endl;
    }
    else
    {
        cout << fixed << setprecision(9) << sum/count << endl;
    }
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2016, 13:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести ответ с заданной точностью (C++):

Определить, принадлежит ли точка заданной области и вывести ответ. - C++
......

Вычислить с заданной точностью значение заданной комплексной функции - C++
Не могу составить алгоритм. Уже 2 дня мучаюсь и ищу материал. Вот, собственно, задачка: Даны комплексное число z (пара вещественных...

Вычисление с заданной точностью - C++
Помогите пожалуйста решить задачу на С++. Даны положительные действительные числа А, Х, Е(epsilon). В последовательности У1,У2,......

Сумма с заданной точностью - C++
Вычислить сумму с заданной точностью #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;clocale&gt; #include &lt;iomanip&gt; #include...

Вычислить с заданной точностью - C++
Помогите написать программу, плз, я закинул в текстовый файл:

Вычисления с заданной точностью - C++
Кому не сложно составьте код пожалуйста) Составить программу для вычисления с заданной точностью E Формулы надо переписывать! ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
SpBerkut
Объявлятель переменных
908 / 234 / 113
Регистрация: 24.09.2011
Сообщений: 875
Завершенные тесты: 2
20.10.2016, 13:52 #2
И в чём вопрос-то?
0
nmcf
5319 / 4639 / 1551
Регистрация: 14.04.2014
Сообщений: 18,452
20.10.2016, 13:52 #3
И что не устраивает?
0
Sultik_Zaka
0 / 0 / 0
Регистрация: 21.09.2016
Сообщений: 59
20.10.2016, 14:55  [ТС] #4
Выводит-то все равно, к примеру, 4.000000000, а не 4.0
А надо именно 4.0
Ну или, допустим, если ответ 3.78, то и вывести надо 3.78, а не 3.78000000
0
SpBerkut
Объявлятель переменных
908 / 234 / 113
Регистрация: 24.09.2011
Сообщений: 875
Завершенные тесты: 2
20.10.2016, 15:12 #5
Цитата Сообщение от Sultik_Zaka Посмотреть сообщение
Выводит-то все равно, к примеру, 4.000000000
Так всё правильно. 4/1000 = 0.004, что в свою очередь не равно нулю.

C++
1
2
3
4
5
6
7
8
9
10
11
double x = sum/count;       // вычислили частное
bool isInt=((x/1000)==0);   // тут, Вы пытаетесь проверить на равенство 0 результат деления x на 1000
// Это бессмысленно, т.к. проще проверить x == 0
if(isInt == true) // сравнивать bool с true тоже лишнее. if (isInt) и вся печаль
{
    cout << sum/count<<".0"<<endl;
}
else
{
    cout << fixed << setprecision(9) << sum/count << endl;
}
Напишите, чего вы пытаетесь добиться от программы. Мы ж поможем.
0
Sultik_Zaka
0 / 0 / 0
Регистрация: 21.09.2016
Сообщений: 59
20.10.2016, 15:22  [ТС] #6
sum/count у меня может равняться как 4, так и 2.337373745 (к примеру)
у меня выходит так, что 4 выводит как 4.000000000, а 2.337373745 правильно, как 2.337373735
а надо, чтоб 4 выводило как 4.0
1.5 как 1.5
3.25 как 3.25
без лишних нулей
0
nmcf
5319 / 4639 / 1551
Регистрация: 14.04.2014
Сообщений: 18,452
20.10.2016, 16:20 #7
Тогда сохраняй в строку и удаляй нули перед выводом.
1
SpBerkut
Объявлятель переменных
908 / 234 / 113
Регистрация: 24.09.2011
Сообщений: 875
Завершенные тесты: 2
20.10.2016, 16:53 #8
Как вариант:
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
#include <iostream>
#include <iomanip>
#include <cmath>
 
bool isInt(const double x) {
    return fabs(x - floor(x))<1e-10;
}
 
int main()
{
    double x = sqrt(4.1);
        
    if (isInt(x)) {
        std::cout << std::fixed << std::setprecision(1) << x << std::endl;
    } else {
        std::cout << std::setprecision(9) << x << std::endl;
    }
    
    x = sqrt(4.0);
        
    if (isInt(x)) {
        std::cout << std::fixed << std::setprecision(1) << x << std::endl;
    } else {
        std::cout << std::setprecision(3) << x << std::endl;
    }
}
0
nmcf
5319 / 4639 / 1551
Регистрация: 14.04.2014
Сообщений: 18,452
20.10.2016, 17:10 #9
SpBerkut, он хочет, чтобы нулей не было в конце, кроме одного нуля у целых.
0
Sultik_Zaka
0 / 0 / 0
Регистрация: 21.09.2016
Сообщений: 59
22.10.2016, 14:01  [ТС] #10
Ребят?
0
nmcf
5319 / 4639 / 1551
Регистрация: 14.04.2014
Сообщений: 18,452
22.10.2016, 14:31 #11
C++
1
2
3
4
5
6
7
    std::ostringstream oss;
    oss << fixed << setprecision(9) << sum / count;
    std::string s = oss.str();
    size_t p = s.find_last_not_of('0');
    if (s[p] == '.') s.erase(p + 2);
    else s.erase(p + 1);
    cout << s << endl;
0
castaway
Эксперт С++
4884 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
22.10.2016, 19:35 #12
Цитата Сообщение от Sultik_Zaka Посмотреть сообщение
Ребят?
Что непонятно? Вам уже кучу вариантов предложили.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2016, 19:35
Привет! Вот еще темы с ответами:

Вычислить с заданной точностью - C++
http://i22.***********/big/2011/0601/8d/84cf869eff0c96b2050336fb680d608d.jpg

Вычислить с заданной точностью - C++
http://i22.***********/big/2011/0607/95/02db2277e85b5a1d8e82919de7293995.jpg

Округление с заданной точностью - C++
Доброе утро, уважаемые форумчане! Помогите найти, где собака зарыта. Есть такая задача: Написать функцию, которая принимает два...

Вычислить с заданной точностью - C++
Все добрый день! Помогите пожалуйста, заранее благодарен http://s17.postimage.org/hv598r9ob/image.jpg


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
22.10.2016, 19:35
Ответ Создать тему
Опции темы

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