Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/25: Рейтинг темы: голосов - 25, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 15.09.2018
Сообщений: 51

Округление до сотых

20.11.2018, 20:07. Показов 4699. Ответов 11

Студворк — интернет-сервис помощи студентам
Всем привет , не могу понять как округлить до сотых, пробовала round но в итоге ничего не получается.
Ниже скрин числа которое нужно округлить.
Если делать через round(sum*1000)/1000, то округляет так: 53315,6800000000000000004, а в конце все равно 4
Миниатюры
Округление до сотых  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.11.2018, 20:07
Ответы с готовыми решениями:

Округление числа double до десятых, до сотых
Приветствую всех, double y=3.1415; нужно округлить y до десятых и сотых, записать в переменные соответственно. т.е. получить 0.1 и...

Округление до сотых
например есть запрос SELECT dParts * pPercent * dMoney / 100 ... dParts int default 0 dMoney decimal(10,2) default 0 pPercent...

Округление в js до 5 сотых
Добрый день, Подскажите как правильно округлить число 1,4236901 нужно получить 1,45 2,503602 нужно получить 2,55 ...

11
 Аватар для Nishen
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,813
20.11.2018, 20:39
(num * 100.0 + 0.5) / 100;
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
20.11.2018, 20:56
Дарья1907, Это она у вас так в отладчике показывает. А будете выводить (cout) округлит правильно. Число 0.68 вообще невозможно представить в компьютере точно. Почему, да от чего - это отдельный разговор.
Цитата Сообщение от Nishen Посмотреть сообщение
(num * 100.0 + 0.5) / 100;
C++
1
(int)(num * 100 + 0.5) / 100.0;
не будет ли точнее?
1
1 / 1 / 0
Регистрация: 15.09.2018
Сообщений: 51
20.11.2018, 21:27  [ТС]
Nishen, не работает

Добавлено через 12 секунд
Байт, не работает
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.11.2018, 21:58
Дарья1907, судя по коду, Вам нужно не округлить, а вывести на экран округлённое значение. тогда так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{
    double sum=20.0;
    int n=3;
    cout <<setprecision(2)<<fixed<<sum/n<<endl;
system("pause"); 
return 0;
}
0
1 / 1 / 0
Регистрация: 15.09.2018
Сообщений: 51
20.11.2018, 22:04  [ТС]
Yetty, нет, мне нужно сумму разбить на купюры и копейки, если с купюрам все нормально, то копейки потом неправильно считает потому что там получается не 0.08 а 0.08000000000004, и при делении на 0.05 получается 16, а должно 1
0
1 / 1 / 0
Регистрация: 15.09.2018
Сообщений: 51
20.11.2018, 22:20  [ТС]
Yetty, Байт, как мне сделать чтобы вот тут было 0.83, а то он делает 0 и всё
Миниатюры
Округление до сотых  
0
1 / 1 / 0
Регистрация: 15.09.2018
Сообщений: 51
20.11.2018, 22:32  [ТС]
вот код
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
int main()
 
{
    setlocale(LC_ALL, "rus");
    double onekop, fivekop, tenkop, fiftykop, ONE, TWO, FIVE, TEN, TWENTY, FIFTY, HUNDRED, TAUSEND, FIVETAUSEND;
    onekop = 0.01; fivekop = 0.05; tenkop = 0.10; fiftykop = 0.50; ONE = 1.00; TWO = 2.00;
    FIVE = 5.00; TEN = 10.00; FIFTY = 50.00; HUNDRED = 100.00; TAUSEND = 1000.00; FIVETAUSEND = 5000.00;
 
    long double sum = 0;
 
    double summa1;
    cout << "Введите количество купюр по 1 копейке: ";
    cin >> summa1;
    sum = summa1 * onekop;
 
    double  summa2;
    cout << "Введите количество купюр по 5 копеек: ";
 
    cin >> summa2;
    sum += summa2 * fivekop;
 
    double  summa3;
    cout << "Введите количество купюр по 10 копеек: ";
    cin >> summa3;
    sum += summa3 * tenkop;
 
    double  summa4;
    cout << "Введите количество купюр по 50 копеек: ";
    cin >> summa4;
    sum += summa4 * fiftykop;
 
    double  summa5;
    cout << "Введите количество купюр по 1 рублю: ";
    cin >> summa5;
    sum += summa5 * ONE;
 
    double summa6;
    cout << "Введите количество купюр по 2 рубля: ";
    cin >> summa6;
    sum += summa6 * TWO;
 
    double  summa7;
    cout << "Введите количество купюр по 10 рублей: ";
    cin >> summa7;
    sum += summa7 * TEN;
 
    double  summa8;
    cout << "Введите количество купюр по 50 рублей: ";
    cin >> summa8;
    sum += summa8 * FIFTY;
 
    double  summa9;
    cout << "Введите количество купюр по 100 рублей: ";
    cin >> summa9;
    sum += summa9 * HUNDRED;
 
    double  summa10;
    cout << "Введите количество купюр по 1000 рублей: ";
    cin >> summa10;
    sum += summa10 * TAUSEND;
 
    double summa11;
    cout << "Введите количество купюр по 5000 рублей: ";
    cin >> summa11;
    sum += summa11 * FIVETAUSEND;
 
    cout << "СУММА: " << fixed << setprecision(2) << sum << endl;
    cout << endl;
    int summa12;
    cout << "Сколько забрали по 100 рублей: ";
    cin >> summa12;
    sum = sum - HUNDRED * summa12;
    cout << "ОСТАТОК: " << sum << endl;
    cout << "Купюр по 5000 рублей: " << summa11 << endl;
    cout << "Купюр по 1000 рублей: " << summa10 << endl;
    cout << "Купюр по 100 рублей: " << summa9 - summa12 << endl;
    cout << "Купюр по 50 рублей: " << summa8 << endl;
    cout << "Купюр по 10 рублей: " << summa7 << endl;
    cout << "Купюр по 2 рублей: " << summa6 << endl;
    cout << "Купюр по 1 рублей: " << summa5 << endl;
    cout << "Купюр по 50 копеек: " << summa4 << endl;
    cout << "Купюр по 10 копеек: " << summa3 << endl;
    cout << "Купюр по 5 копеек: " << summa2 << endl;
    cout << "Купюр по 1 копейке: " << summa1 << endl;
    cout << endl;
    int umn;
    cout << "Введите число на которое умножить: ";
    cin >> umn;
    sum = sum * umn;
    cout << "ОСТАТОК: " << sum << endl;
    cout << "Купюр по 5000 рублей: " << summa11 * umn << endl;
    cout << "Купюр по 1000 рублей: " << summa10 * umn << endl;
    cout << "Купюр по 100 рублей: " << (summa9 - summa12)*umn << endl;
    cout << "Купюр по 50 рублей: " << summa8 * umn << endl;
    cout << "Купюр по 10 рублей: " << summa7 * umn << endl;
    cout << "Купюр по 2 рублей: " << summa6 * umn << endl;
    cout << "Купюр по 1 рублей: " << summa5 * umn << endl;
    cout << "Купюр по 50 копеек: " << summa4 * umn << endl;
    cout << "Купюр по 10 копеек: " << summa3 * umn << endl;
    cout << "Купюр по 5 копеек: " << summa2 * umn << endl;
    cout << "Купюр по 1 копейке: " << summa1 * umn << endl;
    cout << endl;
 
    double razd;
 
    cout << "Введите число на которое разделить: ";
    cin >> razd;
    sum = sum / razd;
    cout << "ОСТАТОК: " << sum << endl;
    int c;
    c = sum / 5000.0;
    cout << "Купюр по 5000 рублей: " << c << endl;
    sum = sum - 5000.0 * c;
    c = sum / 1000.0;
    cout << "Купюр по 1000 рублей: " << c << endl;
    sum = sum - 1000.0 * c;
    c = sum / 100.0;
    cout << "Купюр по 100 рублей: " << c << endl;
    sum = sum - 100.0 * c;
    c = sum / 50.0;
    cout << "Купюр по 50 рублей: " << c << endl;
    sum = sum - 50.0 * c;
    c = sum / 10.0;
    cout << "Купюр по 10 рублей: " << c << endl;
    sum = sum - 10.0 * c;
    c = sum / 2.0;
    cout << "Купюр по 2 рублей: " << c << endl;
    sum = sum - 2.0 * c;
    c = sum / 1.0;
    cout << "Купюр по 1 рублей: " << c << endl;
    sum = sum - 1.0 * c;
    int a;
    double b;
    a = sum / 0.5;
    cout << "Купюр по 50 копеек: " << a << endl;
    sum = sum - 0.5 * a;
    a = sum / 0.1;
    cout << "Купюр по 10 копеек: " << a << endl;
    sum = sum - 0.1 * a;
    b = (int)(sum * 100+0.5) / 100;
    a = b / 0.005;
    cout << "Купюр по 5 копеек: " << a << endl;
    sum = sum - 0.005 *a;
    a = sum / 0.001;
    cout << "Купюр по 1 копейке: " << a << endl;
    system("pause");
    return 0;
}
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
20.11.2018, 22:35
Цитата Сообщение от Дарья1907
Округление до сотых посмотрите пожалуйста комментарий под темой, вы помогли, но там не очень понятно
Есть правило (4.6) Я его придерживаюсь. И вас настоятельно призываю.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
20.11.2018, 23:04
Дарья1907, числа типа double, даже округлённые не хранятся в таком виде. что такое razd ? напишите условие задачи
0
Злостный нарушитель
 Аватар для Verevkin
10263 / 5687 / 1266
Регистрация: 12.03.2015
Сообщений: 26,367
20.11.2018, 23:11
Если хранить сумму как целое число (в копейках), не станет ли проще? Проблема с округлением просто отпадёт.
1
 Аватар для Nishen
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,813
20.11.2018, 23:51
Извините за мой английский... Не придумал как называть поля класса грамотно.

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
49
50
51
52
53
54
55
#include <iostream>
 
class Money {
 
public:
    Money() : m_ruble(0), m_kopek(0) { }
    Money(int ruble, int kopek) : m_ruble(ruble), m_kopek(kopek) { }
 
    friend Money operator+(const Money &, const Money &);
    friend std::ostream& operator<<(std::ostream  &os, const Money &m);
 
private:
    int m_ruble;
    int m_kopek;
    static const int kopekInRuble = 100;
 
};
 
std::ostream& operator<<(std::ostream &os, const Money &m) {
 
    os << m.m_ruble << "." << m.m_kopek;
 
    return os;
 
}
 
Money operator+(const Money &m1, const Money &m2) {
 
    Money result;
 
    result.m_kopek += m1.m_kopek + m2.m_kopek;
 
    if (result.m_kopek > 100) {
 
        result.m_ruble += result.m_kopek / Money::kopekInRuble;
        result.m_kopek %= Money::kopekInRuble;
 
    }
 
    result.m_ruble += m1.m_ruble + m2.m_ruble;
 
    return result;
 
}
 
int main() {
 
    Money m1 = { 10, 70 }, m2{ 105, 50 };
 
    std::cout << m1 + m2 << '\n';
 
    system("PAUSE");
    return 0;
 
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.11.2018, 23:51
Помогаю со студенческими работами здесь

Округление до сотых
Добрый день. Подскажите, что делаю не так. Есть переменные тип double: summa, price, addAmount. Значения: price 338,9 addAmount 1,15....

Округление до сотых.
Два числа делятся друг на друга и надо вывести результат в Dynamic Text . Но в место этого он пишет NaN. Поделил на калькуляторе - много...

Округление до сотых
Помогите пожалуйста округлить &quot;С&quot; до сотых begin A := strtoint(Edit1.Text); C :=(A-32)*(5/9); Edit2.Text :=...

Округление до сотых
Помогите правильно округлить до сотых. Изначально выводит значение с четырьмя знаками после запятой. В интернете вычитал что надо умножить...

Округление числа до сотых
Здравствуйте! Помогите пожалуйста с округлением числа. Например у меня есть поле где мы вводим число(Десятичную дробь). Как мне его...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru