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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
KennyLM
0 / 0 / 0
Регистрация: 17.07.2011
Сообщений: 4
#1

Округление дробового числа - C++

17.07.2011, 18:07. Просмотров 1598. Ответов 7
Метки нет (Все метки)

Здраствуйте . Нужно написать программку. У пользователя должны спросить какое число ввести надо, к примеру он введет 1.234567. Потом у пользователя спрашивают сколько оставить чисел, если 3 то должно получится 1.23, если 5 то 1.2346. Ну и округлить предведущие числа.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2011, 18:07     Округление дробового числа
Посмотрите здесь:

Округление числа - C++
Кто-нибудь может подробно-подробно объяснить, как округлять числа в C++. А то я то, что причитал, ничего не понял. Вот у меня...

Округление числа - C++
Не пойму, почему компилятор пишет Выражение должно иметь целочисленный или перечисляемый тип. Код для округления числа float...

Быстрое округление числа - C++
Здравствуйте уважаемые программисты! Подскажите как быстрее всего округлить число? double a = 4.78531 необходимо получить a = 4.80000...

Погрешность числа (округление) - C++
Всем привет,есть алгоритм в котором производится операция умножения часто. В конечном итоге я получаю ответ равный 1, а верный ответ...

Округление мелкого числа до 0 - C++
Всем привет, времени мало поэтому пишу сюда суть такова - нужно сделать перемножение матриц 3х3 типа double потом вывести на экран ...

Вещественные числа и округление - C++
Или я туплю, или долго сижу, но вот никак не могу решить такую задачу: есть диапазон (напр. от 88 до 88.5), нужно в цикле обойти этот...

округление числа до десятых - C++
Как округлить число до целого я знаю, s=(s-floor(s)<0.5)?floor(s):ceil(v) а как округлить, скажем, число 3.4643 до 3.5 ?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
17.07.2011, 20:22     Округление дробового числа #2
Не мудрствуя лукаво
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
 
int main(void){
    double val;
    int pre;
    
    printf("Value: ");
    scanf("%lf", &val);
    printf("Precision: ");
    scanf("%d", &pre);
    printf("Result: %.*f\n", pre, val);
    
    return 0;
}
-=ЮрА=-
Заблокирован
Автор FAQ
17.07.2011, 20:26     Округление дробового числа #3
Если интересен сам алгоритм округления, а не работа стандартных функций, то вот реализация
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.h>
 
void main()
{
    cout<<"Vvedite chislo\t";
    double num;cin>>num;
    cout<<"Skolko chisel posle zapyatoi ostavit'?\r\n";
    int m;cin>>m;
    int celay_chast = 2*(num/2);
    num -= celay_chast;
    for(int i = 0; i < m; i++)
        num *= 10;
    int drobn_chast = num;
    if(4 < int(num*10 - drobn_chast*10))
        drobn_chast += 1;
    cout<<celay_chast<<"."<<drobn_chast<<"\r\n";
    //ÄîáГ*ГўГЁГ« äëÿ âîçìîæГ*îñòè ââîäГ* ñëåä Г·ГЁГ±ГҐГ«
    cout<<"Nazmite NUM1 dlya povtornogo vvoda\r\n";
    int iKEY;cin>>iKEY;
    if(iKEY == 1)
        main();
}
Миниатюры
Округление дробового числа  
nameless
17.07.2011, 20:32
  #4

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
C++
1
2
if(iKEY == 1) 
    main();
Ох, и нехорошо же так делать..

-=ЮрА=-
Заблокирован
Автор FAQ
17.07.2011, 21:03     Округление дробового числа #5
Хорошо,как по другому реализовать повторное выполненте алгоритма?если вводить цикл-код усложняется,использовать безусловный переход,тоже не рекомендовано,а вот рекурсия иногда даже рекомендована или я не прав?мэйн в рамках указанной программы юзаю как рекурсивную функцию...
ValeryLaptev
Эксперт С++
1035 / 814 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
17.07.2011, 21:06     Округление дробового числа #6
Цитата Сообщение от nameless Посмотреть сообщение

Не по теме:


Ох, и нехорошо же так делать..

Более того, по стандарту - запрещено.
Хотя я с ТурбоС++ еще баловался...

Добавлено через 45 секунд
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Хорошо,как по другому реализовать повторное выполненте алгоритма?если вводить цикл-код усложняется,использовать безусловный переход,тоже не рекомендовано,а вот рекурсия иногда даже рекомендована или я не прав?мэйн в рамках указанной программы юзаю как рекурсивную функцию...
Надо просто написать отдельную рекурсивную функцию и вызвать ее в main().
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
18.07.2011, 03:01     Округление дробового числа #7
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
сам алгоритм округления

Не по теме:

Да разве ж это синкопа? Вот синкопа!
(с)


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
#include <math.h>
 
#define ROUND(v, p) (floor(v * pow(10.0, p) + 0.5) / pow(10.0, p))
 
int main(void){
    double val;
    int precision;
    
    while ( printf("Value: ") && scanf("%lf", &val) == 1 && printf("Precision: ") && scanf("%d", &precision) == 1 )
        printf("Rounded value: %.10f\n", ROUND(val, precision));
    
    return 0;
}
При большом желании floor() и pow() тоже можно свои написать, зачем только?..
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2011, 04:31     Округление дробового числа
Еще ссылки по теме:

Округление числа до двух цифр - C++
Привет) Я только начинаю изучать С++, и вот столкнулся с очень важным вопросом... Как мне округлить число (double) до 2х цыфр после...

Округление числа до ближайшего целого - C++
Часто видел в темах в вопросом &quot;как округлить до ближайшего целого&quot; ответы вроде &quot;использовать функцию a=floor(a+0.5); или a=round(a); ...

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

Округление дробного числа до целого в большую сторону. - C++
Доброго дня. Я новичок в программирование на Visual C++. Проблема такая программа должна считать кол-во месяцев, если числа целые то...

Округление числа до двух знаков после запятой - C++
8. Написать программу, которая предлагает пользователю ввести дробное число, округляет его до двух знаков после запятой и выводит результат...


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

Или воспользуйтесь поиском по форуму:
rrrFer
Заблокирован
18.07.2011, 04:31     Округление дробового числа #8
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
если вводить цикл-код усложняется,использовать безусловный переход,тоже не рекомендовано,а вот рекурсия иногда даже рекомендована или я не прав
используйте цикл. Рекурсия - это большие издержки, связанные с активным использованием стека для сохранения значений локальных переменных перед вызовом функции, передачей аргументов функции и получения результата - все это через стек.
Стек не резиновый, да и инструкций больше.
Везде где можно надо рекурсию преобразовывать в цикл.
Yandex
Объявления
18.07.2011, 04:31     Округление дробового числа
Ответ Создать тему
Опции темы

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