Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.76/540: Рейтинг темы: голосов - 540, средняя оценка - 4.76
 Аватар для Виктор_Сен
36 / 29 / 2
Регистрация: 01.08.2011
Сообщений: 176

Округление чисел

09.08.2011, 17:44. Показов 113679. Ответов 28

Студворк — интернет-сервис помощи студентам
Здравствуйте! Не подскажите, как в си++ округлять числа? Дело в том, что я нашёл в справочнике Герберта Шилдта функции округления - round и trunc. Но когда я их вставил в программу, компилятор заругался. А ещё хотелось бы округлять до сотых, до тысячных и т. д. И ещё, округление типа
C++
1
2
double a=3.14;
int b=(int)a;
как происходит, отбрасыванием дробной части, или математически. Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.08.2011, 17:44
Ответы с готовыми решениями:

Округление чисел в C++
Возник вопрос в округлении, сама задача довольно простая но справиться с помощью гугла не получается, решил задать вопрос сюда. Требуется...

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

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

28
0 / 0 / 0
Регистрация: 26.06.2012
Сообщений: 22
24.09.2013, 22:30
Студворк — интернет-сервис помощи студентам
По этому заданию нужно написать программу. Подскажите хоть что нибудь,я вообще не представляю как ее писать.
Вычисления со строгим учетом предельных абсолютных погрешностей
Этот метод предусматривает использование правил вычисления предельных абсолютных погрешностей. При пооперационном учете ошибок промежуточные результаты, так же как и их погрешности, заносятся в специальную таблицу, состоящую из двух параллельно заполняемых частей - для результатов и их погрешностей.
Пример 2.
В табл. приведены пошаговые вычисления со строгим учетом предельных абсолютных погрешностей по той же формуле, что и в примере 1, и в предположении, что исходные данные а и b имеют предельные абсолютные погрешности дельта а = дельта b = 0,0005 (т.е. у а и b все цифры верны в узком смысле).
Промежуточные результаты вносятся в таблицу после округления до одной запасной цифры (с учетом вычисленной параллельно величины погрешности); значения погрешностей для удобства округляются (с возрастанием!) до двух значащих цифр. Проследим ход вычислений на одном этапе.
Миниатюры
Округление чисел  
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
24.09.2013, 22:42
Цитата Сообщение от Виктор_Сен Посмотреть сообщение
Да, но у меня почему-то на trunc() компилятор ругается. Компилятор Микрософт.
Функция trunc появилась в языке C++ начиная со стандарта С++11.
А вообще тут пример в четырьмя стандартными функциями (round, floor, ceil, trunc)
0
0 / 0 / 0
Регистрация: 26.06.2012
Сообщений: 22
30.09.2013, 21:53
на картинке есть таблица в этой таблице указаны а,в,с,их погрешности и действия с ними. мне нужно написать программу которая бы вычисляла вот эти погрешности чисел,выполняла действия с числами и округляла их с учетом погрешностей.и нужно еще погрешность действий по правилам вычислять,это можно как нибудь реализовать???
0
18 / 18 / 3
Регистрация: 16.09.2013
Сообщений: 126
27.10.2013, 10:04
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
0
Эксперт С++
 Аватар для grizlik78
2383 / 1667 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
27.10.2013, 10:31
Цитата Сообщение от Alex_Skripa Посмотреть сообщение
вот фрагментик реально округляющий числа по математическим правилам, все представленные ранее варианты дадут ошибку например при округлении до 2х знаков число 0.4444444445
Хм.
Введите число!-----> 0.4444444445

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

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

Добавлено через 1 минуту
последняя 5ка дает нам в следующей цифре 5ку итд до нужного знака
и это по математическим правилам округления...
0
Эксперт С++
 Аватар для grizlik78
2383 / 1667 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
27.10.2013, 10:52
Цитата Сообщение от Alex_Skripa Посмотреть сообщение
последняя 5ка дает нам в следующей цифре 5ку итд до нужного знака
и это по математическим правилам округления...
Таких математических правил нет. Это кто-то тебя обманул.
Абсолютное значение разности между точным значением и округлённым не должно быть больше половины разряда, до которого производится округление.
0
18 / 18 / 3
Регистрация: 16.09.2013
Сообщений: 126
27.10.2013, 11:02
Цитата Сообщение от grizlik78 Посмотреть сообщение
Таких математических правил нет. Это кто-то тебя обманул.
Абсолютное значение разности между точным значением и округлённым не должно быть больше половины разряда, до которого производится округление.
Да я сам себя обманул! Не знаю откуда я себе это в голову вбил...
0
0 / 0 / 0
Регистрация: 13.02.2016
Сообщений: 4
24.04.2017, 18:05
Лови и не парся. Нашел на stackoverflow.

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

Округляет до одного знака после запятой (Точка тоже знак. Поэтому в параметре двойка).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.04.2017, 18:05

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

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

Округление дробных чисел
Напишите программу, которая будет округлять до десятых, сотых и тысячных число... к примеру: 12.385497 Заранее благодраю!)

Округление вещественных чисел
Наткнулся на задачу,не могу решить.Помогите пж Надо написать программу которое округляет вещественное число до тысячных P.S. Могут...

Некорректный ввод чисел(округление)
Самый простой ввод числа:cin &gt;&gt; temp; При вводе &quot;3.01&quot; - temp=3.0999..98, что рушит все дальнейшие вычисления. Как вводить...


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru