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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 366, средняя оценка - 4.81
Виктор_Сен
33 / 26 / 1
Регистрация: 01.08.2011
Сообщений: 176
#1

Округление чисел - C++

09.08.2011, 17:44. Просмотров 50652. Ответов 28

Здравствуйте! Не подскажите, как в си++ округлять числа? Дело в том, что я нашёл в справочнике Герберта Шилдта функции округления - round и trunc. Но когда я их вставил в программу, компилятор заругался. А ещё хотелось бы округлять до сотых, до тысячных и т. д. И ещё, округление типа
C++
1
2
double a=3.14;
int b=(int)a;
как происходит, отбрасыванием дробной части, или математически. Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.08.2011, 17:44     Округление чисел
Посмотрите здесь:

Округление чисел С++ - C++
Как сделать та чтоб после запятой в числе всегда било три цифри хоть ето и ноль . Например: 4.000 4.100 7.111

Программа на с\с++ (округление чисел) - C++
помогите пожалуйста, нужно написать программу которая округляет числа не используя уже встроенных в компилятор функций.

Округление дробных чисел С++ - C++
Здравствуйте, нужно округлить дробное число. Самое простое сделать вот так: float smth; smth = 345.678945; printf("%2.3f",...

Не выполняется округление чисел - C++
Здравствуйте, есть код программы, которая считай ряд Тейлора, и при этом все работает, НО как только я добовляю функцию округления, все...

Округление положительных чисел с плавающей точкой - C++
Добрый день ! Нужно округлить положительных чисел с плавающей точкой в большую сторону к числу кратному 5. то есть если есть...

Округление чисел при решении СЛАУ - C++
Добрый день! Подскажите, пожалуйста, программа решает систему линейных алгебраических уравнений вида AX=B методом Гаусса. Но в конце...

printf. Округление чисел типа double - C++
Пытаюсь писать программу для округления чисел типа double. // okruglenie double.cpp: определяет точку входа для консольного...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SLASTY_73
0 / 0 / 0
Регистрация: 26.06.2012
Сообщений: 22
24.09.2013, 22:30     Округление чисел #21
По этому заданию нужно написать программу. Подскажите хоть что нибудь,я вообще не представляю как ее писать.
Вычисления со строгим учетом предельных абсолютных погрешностей
Этот метод предусматривает использование правил вычисления предельных абсолютных погрешностей. При пооперационном учете ошибок промежуточные результаты, так же как и их погрешности, заносятся в специальную таблицу, состоящую из двух параллельно заполняемых частей - для результатов и их погрешностей.
Пример 2.
В табл. приведены пошаговые вычисления со строгим учетом предельных абсолютных погрешностей по той же формуле, что и в примере 1, и в предположении, что исходные данные а и b имеют предельные абсолютные погрешности дельта а = дельта b = 0,0005 (т.е. у а и b все цифры верны в узком смысле).
Промежуточные результаты вносятся в таблицу после округления до одной запасной цифры (с учетом вычисленной параллельно величины погрешности); значения погрешностей для удобства округляются (с возрастанием!) до двух значащих цифр. Проследим ход вычислений на одном этапе.
Миниатюры
Округление чисел  
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
24.09.2013, 22:42     Округление чисел #22
Цитата Сообщение от Виктор_Сен Посмотреть сообщение
Да, но у меня почему-то на trunc() компилятор ругается. Компилятор Микрософт.
Функция trunc появилась в языке C++ начиная со стандарта С++11.
А вообще тут пример в четырьмя стандартными функциями (round, floor, ceil, trunc)
SLASTY_73
0 / 0 / 0
Регистрация: 26.06.2012
Сообщений: 22
30.09.2013, 21:53     Округление чисел #23
на картинке есть таблица в этой таблице указаны а,в,с,их погрешности и действия с ними. мне нужно написать программу которая бы вычисляла вот эти погрешности чисел,выполняла действия с числами и округляла их с учетом погрешностей.и нужно еще погрешность действий по правилам вычислять,это можно как нибудь реализовать???
Alex_Skripa
18 / 18 / 1
Регистрация: 16.09.2013
Сообщений: 126
27.10.2013, 10:04     Округление чисел #24
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
37
38
39
40
41
42
43
44
45
46
47
48
#include "stdafx.h"
#include <iostream>
#include <math.h>
#include <fstream>
#include <stdio.h>
#include <cstdio>
#include <string>
#include <sstream>
#include <iomanip>
using namespace std;
   
string IntToStr(double Val)
{      
    string result;
    std::stringstream ost;
    ost << std::fixed << std::setprecision(20) << ( 22.0 / 7.0 );
    ost << Val;
    result = ost.str();
    return result;
}
 
double Round(double Argument, int Preception)
{
    double s,result;
    string z;
    int znak,k,i;
    znak=fabs(Argument)/Argument;
    Argument=fabs(Argument);
    z=IntToStr(Argument);
    k=z.size()-2;
    Argument=Argument*pow(10.0,double(Preception));
    s=0.5;
    for (i=1;i<=k-2;i++)
        s=s+s*pow(10,double(-i));
    result=znak*floor(Argument+s)/pow(10.0,double(Preception));
    return result;
}
 
int main()
{
    setlocale(LC_ALL,"Russian");
    double n;
    cout <<"Введите число!-----> ";cin >>n;
    cout <<"\nЧисло после округления"<<Round(n,2);
    getchar();
    getchar();
    return 0;
}
вот фрагментик реально округляющий числа по математическим правилам, все представленные ранее варианты дадут ошибку например при округлении до 2х знаков число 0.4444444445
grizlik78
Эксперт С++
1904 / 1436 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
27.10.2013, 10:31     Округление чисел #25
Цитата Сообщение от Alex_Skripa Посмотреть сообщение
вот фрагментик реально округляющий числа по математическим правилам, все представленные ранее варианты дадут ошибку например при округлении до 2х знаков число 0.4444444445
Хм.
Введите число!-----> 0.4444444445

Число после округления0.45
Считаешь, что результат получился по математическим правилам? У математика здесь бы 0.44 получилось.
Alex_Skripa
18 / 18 / 1
Регистрация: 16.09.2013
Сообщений: 126
27.10.2013, 10:45     Округление чисел #26
Цитата Сообщение от grizlik78 Посмотреть сообщение
Хм.

Считаешь, что результат получился по математическим правилам? У математика здесь бы 0.44 получилось.
С чего????? учитывается последняя цифра округляешь постепенно до нужного числа и получается 0.45 поразмысли немного)

Добавлено через 1 минуту
последняя 5ка дает нам в следующей цифре 5ку итд до нужного знака
и это по математическим правилам округления...
grizlik78
Эксперт С++
1904 / 1436 / 109
Регистрация: 29.05.2011
Сообщений: 2,990
27.10.2013, 10:52     Округление чисел #27
Цитата Сообщение от Alex_Skripa Посмотреть сообщение
последняя 5ка дает нам в следующей цифре 5ку итд до нужного знака
и это по математическим правилам округления...
Таких математических правил нет. Это кто-то тебя обманул.
Абсолютное значение разности между точным значением и округлённым не должно быть больше половины разряда, до которого производится округление.
Alex_Skripa
18 / 18 / 1
Регистрация: 16.09.2013
Сообщений: 126
27.10.2013, 11:02     Округление чисел #28
Цитата Сообщение от grizlik78 Посмотреть сообщение
Таких математических правил нет. Это кто-то тебя обманул.
Абсолютное значение разности между точным значением и округлённым не должно быть больше половины разряда, до которого производится округление.
Да я сам себя обманул! Не знаю откуда я себе это в голову вбил...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2017, 18:05     Округление чисел
Еще ссылки по теме:

Округление результата деления двух целых чисел в большую сторону с++ - C++
Существует ли стандартная функция в с++, округляющая результат деления двух целых чисел друг на друга в большую сторону? (5/2=3)

Округление - C++
Почему при таком коде: #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cmath&gt; using namespace std; int main() { cout &lt;&lt;...

Округление - C++
Привет всем.Возникла необходимость округлить число до 1000.Как это реализовать.Помогите пожалуйста.

округление - C++
суть проблемы такова, Ro=sqrt(SumR/(1/SumR)) вот этот кусок прраммы почему округляет ответ до целых, хотя Ro типа double, помогите, в...

Округление до 0,5 - C++
Уважаемые форумчане, подскажите как реализовать округление до 0,5. То есть, например: 4,3 округляется до 4,5, а 4,2 до 4,0.


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

Или воспользуйтесь поиском по форуму:
ЮрийМ
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 2
24.04.2017, 18:05     Округление чисел #29
Лови и не парся. Нашел на stackoverflow.

double a = 2.12645;
std::cout.precision(2);
std::cout << a;

Округляет до одного знака после запятой (Точка тоже знак. Поэтому в параметре двойка).
Yandex
Объявления
24.04.2017, 18:05     Округление чисел
Ответ Создать тему
Опции темы

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