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

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

Войти
Регистрация
Восстановить пароль
 
newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 555
#1

Программа не слушается своего создателя! - C++

10.06.2013, 22:50. Просмотров 269. Ответов 2
Метки нет (Все метки)

Вообщем написал прогу, округляет число до указаного знака после запятой. Прога работает нормально в "мягком" диапазоне (до 8 цифр), а как только больше цифр сразу начинает выделыватся
Супер секретный код!!!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
double round (double a, double b) 
{
    const int q=10;
    a*=(int)pow(q,b+1);
    int k=(int(a)%q);
    if (k>=5) {
        a+=(q-k);
        return a/pow(q,b+1);
        }
    else {
        a=int(a/q);
        return a/pow(q,b);
        }
}

ну например round(123.1234,3) вернет 123.123-тоесть все норм, а вот round(1234.1234,3) вернет 1234.12-что не есть хорошо. ну 8 цифров как бы намекают на чтото связаное с максимальным допустимым диапазоном в типе данных, например инт. я так прикидывал вроде в 2 млрд. вкладываюсь, но я вообщем нуб в этом деле, так что подскажите пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2013, 22:50     Программа не слушается своего создателя!
Посмотрите здесь:

Создание своего вектора C++
include своего файла C++
Новый диалог не слушается C++
C++ Программирование для своего интересса
C++ Введите месяц и день своего рождения
Проверка скорости работы своего list C++
Создать тип данных своего размера C++
C++ Создание своего класса
Объявление переменной своего типа C++
Seekp() Не слушается C++
C++ Массив вместо своего значения выдает М
C++ Реализация stl-ной queue с объектами своего класса, вылетает программа

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GetVariable
163 / 119 / 5
Регистрация: 17.03.2013
Сообщений: 283
10.06.2013, 22:53     Программа не слушается своего создателя! #2
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
/*
*****************************
*   ConstProg Studio 2013   *
*****************************
*/
 
#include <iostream>
#include <sstream>
#include <string>
#include <iomanip>
 
float rounding_nearest(float number, int precision);
 
int main()
{
    std::cout << "Enter number: ";
 
    float number;
 
    std::cin >> number;
 
    std::cout << "Enter rounding precision: ";
 
    int precision;
 
    std::cin >> precision;
 
    std::cout << "Answer: " << rounding_nearest(number, precision) << std::endl;
 
    return 0;
}
 
float rounding_nearest(float number, int precision)
{
    std::stringstream out_stream;
 
    out_stream << std::setprecision(precision) << number;
    
    std::string out = out_stream.str();
 
    return (float)atof(out.c_str());
}
newb_programmer
237 / 237 / 19
Регистрация: 03.09.2011
Сообщений: 555
11.06.2013, 19:50  [ТС]     Программа не слушается своего создателя! #3
Цитата Сообщение от GetVariable Посмотреть сообщение
...
Спасибо конечно за внимание к моей проблеме, но приведенный Вами код мне ни о чем не говорит и никак не помог соответственно

Добавлено через 19 часов 58 минут
вообщем я провел расследование с помощью дебагера. оказывается функция все правильно считает и выдает корректные результаты! но с какогото перепугу выводится на экран другое значение! и опять таки привожу пример!
число 12345.1234 округлить до 3го знака, функция возвращает 12345.123, но на экран выводится 12345.1
что это за чушь?!
Yandex
Объявления
11.06.2013, 19:50     Программа не слушается своего создателя!
Ответ Создать тему
Опции темы

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