5 / 3 / 0
Регистрация: 22.09.2019
Сообщений: 111
1

Функция округления

26.02.2020, 20:56. Показов 6074. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер,дала задание написать свою функцию округления числе,и применить её на своем придуманном примере,например,округлить число 4,44419,проблема в том,что не могу подступиться к выполнению данной задачи,помогите пожалуйста
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.02.2020, 20:56
Ответы с готовыми решениями:

Функция округления double
Как в С++ округлить double до int? С помощью какой функции?

Функция округления чисел
Здравствуйте, подскажите пожалуйста. Написала функцию округления цифр void...

Функция округления вещественного числа с заданной точностью
Написать шаблон функции, которая принимает в качестве параметров вещественное число и количество...

Функция округления вещественного числа с заданой точностью
Написать функцию,которая принимает в качестве параметров вещественное число и количество знаков...

8
6578 / 4563 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
26.02.2020, 22:02 2
Цитата Сообщение от kPocta Посмотреть сообщение
Добрый вечер,дала задание написать свою функцию округления числе,и применить её на своем придуманном примере,например,округлить число 4,44419,проблема в том,что не могу подступиться к выполнению данной задачи,помогите пожалуйста
А до чего ты хочешь округлить это 4,44419? (Или как в том анекдоте - ты продаёшь или покупаешь?)
0
532 / 374 / 76
Регистрация: 24.09.2017
Сообщений: 2,108
Записей в блоге: 13
26.02.2020, 22:09 3
Лучший ответ Сообщение было отмечено kPocta как решение

Решение

Если надо, по вашему заданию, " Функция окргуления числе", то вариантов три:
написать функцию, использовать оператор setprecision и оператор printf.
Первые два варианта могут использовать переменную, количества знаков после запятой, введённую с клавиатуры. Третья нет.
Вот два варианта. Функцию округления я использовал для другой цели поэтому, по-быстрому её "подшаманил". Вы можете её оптимизировать под вашу задачу.
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
32
33
34
35
36
#include <iomanip>          // для setprecision()
 
#include <cmath>
#include <iostream>
using namespace std;        //Использовать пространство имён std::
 
double okrug(double prom, int mn1)
      {
       double prom1, mn = 10;
       mn =  pow(mn, mn1);
    prom = int(prom * 10* mn);
    prom1 = (int(prom / 10)) * 10;
    prom = prom - prom1;
    prom1 = prom1/10;
    if (prom > 5) prom1 = prom1 + 1;
    prom = prom1 / (1 * mn);
    return prom;
      }
 
 
int main()
 {
     setlocale(LC_ALL, "Rus");  //Устанавливаем русский шрифт
     double num;
     int mn;
     cout <<"Введите число ";
     cin >> num;
      cout <<"Округление до количества знаков после запятой - ";
     cin >> mn;
     cout <<"Округление при помощи функции : ";
     cout << okrug (num, mn) << endl;
    cout <<"Округление при помощи setprecision : ";
    cout << fixed << setprecision(mn) <<  num << endl;
     system ("pause");
    return 0;
 }
1
7430 / 5022 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
26.02.2020, 23:18 4
Цитата Сообщение от Argus19 Посмотреть сообщение
использовать оператор setprecision
setprecision округлит вывод (само число остаётся без изменений).

kPocta, нужно округлить до целой части ? округляет число до целой части функция round. если требуется написать свою функцию округления можно примерно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 
int round_r (double a)
{
    int r=int(a);    
    if (a-r<0.5) return r;
    return r+1;    
}
 
 
int main()
 {
    double a;
    
    cout << "a="; cin >> a;
    
    cout << round_r(a) << "\n";
    
system ("pause");
return 0;
}
1
6006 / 3384 / 1378
Регистрация: 07.02.2019
Сообщений: 8,549
26.02.2020, 23:21 5
Yetty, отриц. числа не правильно округляет
1
7430 / 5022 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
27.02.2020, 00:13 6
с учётом отрицательных:
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
#include <iostream>
using namespace std;
 
int round_r (double a)
{
    int sign=1;
    if (a<0.) {sign=-1;a=-a;}
    int r=int(a);    
    
    if (a-r<0.5) return sign*r;
    return sign*(r+1);    
}
 
 
int main()
 {    
    double a;
    
    cout << "a="; cin >> a;
    
    cout << round_r(a) << "\n";
    
system ("pause");
return 0;
}
1
532 / 374 / 76
Регистрация: 24.09.2017
Сообщений: 2,108
Записей в блоге: 13
27.02.2020, 05:40 7
Цитата Сообщение от Yetty Посмотреть сообщение
setprecision округлит вывод (само число остаётся без изменений).
Для упрощения кода.
В задании не указано, что число будет использоваться в дальнейшем. Функция из одной стоки . А предложенная мной функция округляет и положительные и отрицательные числа до любого знака после запятой. Преподаватель заметит.
1
817 / 504 / 211
Регистрация: 19.01.2019
Сообщений: 1,196
28.02.2020, 00:44 8
C++
1
2
3
double myFloor(double val, uint8_t prec = 0) {
    return int64_t(val * pow(10, prec)) / pow(10, prec);
}
1
5 / 3 / 0
Регистрация: 22.09.2019
Сообщений: 111
01.03.2020, 21:31  [ТС] 9
большое спасибо всем кто помог.
0
01.03.2020, 21:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.03.2020, 21:31
Помогаю со студенческими работами здесь

Функция floor для округления значения до определённого числа знаков дробной части
Всем привет ребята. кто мог бы объяснить где и что неправильно у меня в коде и как это исправить....

Чудеса округления
Не могу посчитать i-ый член по формуле разности Ньютона (см. прикреплённый файл). Из-за...

Каковая точность округления?
Какова точность округления у таких функций, как round/ceil/floor? Сколько раз я могу просуммировать...

Метод округления числа
Метод округления числа введонного с клавиатуры. Например вводим 2,5 , а выводит 3 ;


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru