С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/163: Рейтинг темы: голосов - 163, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 21.09.2016
Сообщений: 59
1

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

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

Author24 — интернет-сервис помощи студентам
Привет! Зачастил я тут ;(
В общем, не могли бы помочь?
Требуется сделать вывод ответа с точностью до 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2016, 13:47
Ответы с готовыми решениями:

Вывести число e с заданной точностью
Выведите в выходной файл округленное до n знаков после десятичной точки число E. В данной задаче...

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

Вывести значение бесконечной суммы с заданной точностью ε
Помогите найти ошибку в решении( Вывести значение бесконечной суммы ((-2)^i)/(i!) с заданной...

Вывести число с заданной точностью знаков
Никак не получается нормально вывести число с точностью, допустим 10 знаком после запятой, но при...

11
Объявлятель переменных
1220 / 406 / 320
Регистрация: 24.09.2011
Сообщений: 1,274
20.10.2016, 13:52 2
И в чём вопрос-то?
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
20.10.2016, 13:52 3
И что не устраивает?
0
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
Объявлятель переменных
1220 / 406 / 320
Регистрация: 24.09.2011
Сообщений: 1,274
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
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
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
20.10.2016, 16:20 7
Тогда сохраняй в строку и удаляй нули перед выводом.
1
Объявлятель переменных
1220 / 406 / 320
Регистрация: 24.09.2011
Сообщений: 1,274
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
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
20.10.2016, 17:10 9
SpBerkut, он хочет, чтобы нулей не было в конце, кроме одного нуля у целых.
0
0 / 0 / 0
Регистрация: 21.09.2016
Сообщений: 59
22.10.2016, 14:01  [ТС] 10
Ребят?
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
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
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
22.10.2016, 19:35 12
Цитата Сообщение от Sultik_Zaka Посмотреть сообщение
Ребят?
Что непонятно? Вам уже кучу вариантов предложили.
0
22.10.2016, 19:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2016, 19:35
Помогаю со студенческими работами здесь

Вычислить с заданной точностью, вывести количество итераций
Даны действительные числа x, ε (x не равно 0, ε&gt;0). Вычислить с точностью ε, в конце надо...

Вычислить сумму ряда и вывести количество итераций с заданной точностью
в общем: 20 членов ряда сумма=1-3х^2+5х^4-7х^6+9х^8....и тд.... х=1/2, эпселент=0.0001

Найти сумму с заданной точностью точностью E
Кто-нибудь помогите,а то сижу целый день уже и не могу понять как делать....

Вывести ответ «Да», если все цифры четные, и ответ «Нет» в остальных случаях.
С клавиатуры вводится трёхзначное число. Нужно вывести ответ «Да», если все его цифры четные, и...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru