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

Неправильное округление

27.10.2017, 14:04. Показов 1572. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
      
int main()
{
        int a = 81;
    int b = 176;
    double c = 0.98;
    double d;
 
    d = round((a * b  * c) * 100) / 100;
    cout << " Otvet: " << d << endl;
 
    system("pause");
    return 0;
}
ответ получается: 13970.9, а должен быть 13970.88, где ошибка? Подскажите пожалуйста
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.10.2017, 14:04
Ответы с готовыми решениями:

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

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

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

7
 Аватар для Herji
299 / 208 / 174
Регистрация: 11.05.2016
Сообщений: 655
27.10.2017, 14:29
C++
1
2
 std::cout.precision(7);
    std::cout << " Otvet: " << d << "\n";
1
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 6
27.10.2017, 17:11  [ТС]
Это сработало, но дело в том что числа могут быть рандомными я не знаю сколько символом будет 7 или 5

Почему не работает с round(() * 100) / 100 ? c другими числами все норм например: 34.35 * 1.2 * 4.5 = 185.49, оно не округляет 185.5
0
 Аватар для Herji
299 / 208 / 174
Регистрация: 11.05.2016
Сообщений: 655
27.10.2017, 19:04
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
d = round((a * b  * c) * 100) / 100;
    printf(" %f \n\n", d); //13970.000000
 
    d = round((a * b  * c) * 100) / 100.0;
    printf(" %f \n\n", d); //13970.880000
 
    d = round((a * b  * c) * 100);
    printf(" %f \n\n", d); // 1397088.000000
 
    d = (a * b  * c) * 100;
    printf(" %f \n\n", d); // 1397088.000000
 
    d = (a * b  * c);
    printf(" %f \n\n", d); //13970.880000
 
    d = round((a * b  * c) * 100) / 100.0;
    printf("Otvet: %f", d); //13970.880000
Только непонятно зачем Вам тут округление и где вы этот round нашли
0
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 6
31.10.2017, 00:38  [ТС]
round подсказали тут: Как сделать округление/отбрасывание ненужных цифр после запятой?
Мне просто надо чтоб округляло число до сотых, вот и я использую round. Чтоб было точно, не больше не меньше, но вот с этим числом что-то не получается
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
31.10.2017, 00:43
C++
1
2
3
#include <iomanip> // в заголовках
    
cout << setiosflags(ios::fixed | ios::showpoint) << setprecision(2) << " Otvet: " << d << endl;
1
0 / 0 / 0
Регистрация: 05.10.2016
Сообщений: 6
31.10.2017, 01:16  [ТС]
Хорошо, спасибо, подсказать почему с cround(d*100)/100 не работает?

По идеи должно быть так:
C++
1
2
3
4
5
6
7
8
9
 
    double a = 81.0;
    double b = 176.0;
    double c = 0.98;
    double d = a * b  * c;
    cout << round(d * 10) / 10. << endl; // первого 13970.9
    cout << round(d * 100) / 100. << endl; // второго 13970.88
    cout << round(d * 1000) / 1000. << endl; // третьего 13970.88
    cout << round(d * 10000) / 10000. << endl; // четвертого 13970.88
Но результат получается везде 13970.9

А если взять h =34.35 * 1.2 * 4.5, то с ним все нормально

C++
1
2
3
4
5
6
7
8
    double e = 34.35;
    double f = 1.2;
    double g = 4.5;
    double h = e * f  * g;
    cout << round(h * 10) / 10. << endl; // первого 185.5
    cout << round(h * 100) / 100. << endl; // второго 185.49
    cout << round(h * 1000) / 1000. << endl; // третьего 185.49
    cout << round(h * 10000) / 10000. << endl; // четвертого 185.49
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
31.10.2017, 01:59
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>
#include <iomanip>
 
using namespace std;
 
int main()
{
    int a = 81;
    int b = 176;
    double c = 0.98;
    double d = a * b * c;
 
    cout << setiosflags(ios::fixed | ios::showpoint) << setprecision(2) << " Otvet: " << d << endl;
 
    cout << setprecision(1) << d << endl; // первого 13970.9
    cout << setprecision(2) << d << endl; // второго 13970.88
    cout << setprecision(3) << d << endl; // третьего 13970.880
    cout << setprecision(4) << d << endl; // четвертого 13970.8800
 
    system("pause");
    return 0;
}
Добавлено через 19 минут
Или так, если вы хотите именно вашу конструкцию использовать.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <iomanip>
 
using namespace std;
 
int main()
{
    double a = 81.0;
    double b = 176.0;
    double c = 0.98;
    double d = a * b  * c;
    cout << setprecision(12);
    cout << round(d * 10) / 10. << endl; // первого 13970.9
    cout << round(d * 100) / 100. << endl; // второго 13970.88
    cout << round(d * 1000) / 1000. << endl; // третьего 13970.88
    cout << round(d * 10000) / 10000. << endl; // четвертого 13970.88
 
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.10.2017, 01:59
Помогаю со студенческими работами здесь

Округление
Округление Нужно найти корень числа 3. Должно получиться 2, но у меня выходит 1, тк нужно округлить. Помогите пожайлуста, можно...

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

Неправильное перевыделение
Собственно помогите правильно перевыделить память под массив. #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;stdlib.h&gt; ...

Округление до целых
Как округлить число с вещественного, в целое? функция round из math.h не пашет.

Округление дробных
Добрый день! Подскажите как можно округлить число с плавающей точкой до определённого числа знаков после точки? например до 4: ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru