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

Как округлить число до сотых? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
Kubson
-24 / 2 / 0
Регистрация: 17.07.2014
Сообщений: 253
06.08.2014, 11:26     Как округлить число до сотых? #1
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь?
Мне 11 лет, и я учусь программировать на С++.
У меня есть программа, которая вычисляет цену картины по её длине и ширине. Но полученную цену нужно округлить до сотых. Как это сделать?
Вот код программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream> 
int main()
{
    double a=0, b=0, c=0;
    std::cout << " Enter the width of the picture ";
    std::cin >> a;
    std::cout << " Enter the length of the picture ";
    std::cin >> b;
    c =a*b*0.00406;
    std::cout << "  The price is  " << c << std::endl;
    std::cout << "  press Enter... ";
    std::cin.get();
    std::cin.get();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
porshe
 Аватар для porshe
52 / 46 / 17
Регистрация: 18.07.2014
Сообщений: 194
06.08.2014, 11:33     Как округлить число до сотых? #2
Цитата Сообщение от Kubson Посмотреть сообщение
Мне 11 лет,
Можно не указывать свой возраст в каждом сообщении.

Цитата Сообщение от Kubson Посмотреть сообщение
Но полученную цену нужно округлить до сотых. Как это сделать?
Можно воспользоваться setprecision( n ), где n - количество цифр после запятой.
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
06.08.2014, 12:04     Как округлить число до сотых? #3
C++
1
2
double a = ...
a = (int)(a * 100) / 100.;
Kubson
-24 / 2 / 0
Регистрация: 17.07.2014
Сообщений: 253
06.08.2014, 13:41  [ТС]     Как округлить число до сотых? #4
Я не понимаю, куда вписывать эти две строки.
porshe
 Аватар для porshe
52 / 46 / 17
Регистрация: 18.07.2014
Сообщений: 194
06.08.2014, 13:50     Как округлить число до сотых? #5
Цитата Сообщение от Kubson Посмотреть сообщение
Я не понимаю, куда вписывать эти две строки.
В моём варианте:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream> 
#include <iomanip>
int main()
{
    double a=0, b=0, c=0;
    std::cout << " Enter the width of the picture ";
    std::cin >> a;
    std::cout << " Enter the length of the picture ";
    std::cin >> b;
    c =a*b*0.00406;
    std::cout << "  The price is  " << std::setprecision( 2 ) << c << std::endl;
    std::cout << "  press Enter... ";
    std::cin.get();
    std::cin.get();
    return 0;
}

В варианте от castaway:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream> 
int main()
{
    double a=0, b=0, c=0;
    std::cout << " Enter the width of the picture ";
    std::cin >> a;
    std::cout << " Enter the length of the picture ";
    std::cin >> b;
    c =a*b*0.00406;
    c = (int)(c * 100) / 100.;
    std::cout << "  The price is  " << c << std::endl;
    std::cout << "  press Enter... ";
    std::cin.get();
    std::cin.get();
    return 0;
}
Donnerwetter
40 / 40 / 12
Регистрация: 04.02.2014
Сообщений: 144
06.08.2014, 23:02     Как округлить число до сотых? #6
Цитата Сообщение от porshe Посмотреть сообщение
Можно воспользоваться setprecision( n )
Цитата Сообщение от castaway Посмотреть сообщение
Код C++
1 double a = ...
2 a = (int)(a * 100) / 100.;
Но это ведь не округление, а просто отсечение лишних цифр. Т.е. из числа, допустим, 3.0176 получим 3.01, хотя при округлении должно быть 3.02.
TyLinka
32 / 32 / 11
Регистрация: 02.02.2012
Сообщений: 177
06.08.2014, 23:48     Как округлить число до сотых? #7
вот пример с округлением:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <iomanip>
 
using namespace std;
 
int main()
{
    double x = 23.2358;
    double y = 0.3412;
    
    cout << setiosflags(ios::fixed) << setprecision(2) << x << endl; // 23.236
    cout << setprecision(2) << y << endl; // 0.34
    
    return 0;
}
setiosflags(ios::fixed) - нужно для корректного вывода данного числа (в неэкспоненциальной форме)
Kubson
-24 / 2 / 0
Регистрация: 17.07.2014
Сообщений: 253
06.08.2014, 23:50  [ТС]     Как округлить число до сотых? #8
Первый вариант не правильный, в нём округляется до десятых, зато второй вариант отлично работает! Спосибо!
TyLinka
32 / 32 / 11
Регистрация: 02.02.2012
Сообщений: 177
07.08.2014, 00:19     Как округлить число до сотых? #9
Почему неправильный первый вариант? Я просто в комменте ошиблась, там выведется 23.24
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 10
Завершенные тесты: 1
07.08.2014, 07:13     Как округлить число до сотых? #10
Donnerwetter, это именно округление. В какую сторону необходимо округлять ТС не говорил.
В большую сторону:
C++
1
a = (int)ceil( a * 100 ) / 100.;
Sergio Leone
2446 / 1091 / 398
Регистрация: 07.06.2014
Сообщений: 3,243
07.08.2014, 09:14     Как округлить число до сотых? #11
Цитата Сообщение от castaway Посмотреть сообщение
это именно округление
)
под округлением обычно понимается математическое округление, если первая отбрасываемая цифра в дробной части меньше 5 - то число округляется к ближайшему меньшему целому, если отбрасываемая цифра 5 или больше - то округляется к большему целому.

Но код совсем несложно модифицировать для такого округления:
C++
1
a = (int)( a * 100 + 0.5) / 100.;
только нужно посмотреть, что будет, если а отрицательно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.08.2014, 10:27     Как округлить число до сотых?
Еще ссылки по теме:

C++ Округлить число
C++ Округлить число до 25 знаков после десятичной точки
ввести шестизначное число и вывести его в определенном формате и округлить C++

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

Или воспользуйтесь поиском по форуму:
Kubson
-24 / 2 / 0
Регистрация: 17.07.2014
Сообщений: 253
07.08.2014, 10:27  [ТС]     Как округлить число до сотых? #12
TyLinka, я писал это не тебе, а пользователю porshe!

Добавлено через 20 минут
Не один из пока услышенных вами вариантов не был правильным! В варианте от Castaway не округляется, а отделяются две последние цифры. В варианте от TyLinka программа не запускается, у porshe округляется до десятых, а не до сотых. Помогите, пожалуйста! Мне нужно округление до сотых, в меншую сторону. Например: чтобы если пользователь ввел 55 и 20, ему выдало число 4,47. А не 4,46 как в варианте castaway.

Добавлено через 13 минут
А вот вариант Sergo Leone обсалютно правильный!

Добавлено через 1 минуту
В моей программе на экран выводится цена картины. Подскажите, пожалуйста, как сделать так, чтобы после числа выводился значок €. Например: 4,47 €. Заранее благодарю!
Yandex
Объявления
07.08.2014, 10:27     Как округлить число до сотых?
Ответ Создать тему
Опции темы

Текущее время: 07:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru