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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.85
woldzlo
1 / 1 / 0
Регистрация: 03.12.2010
Сообщений: 45
#1

Вывод числа после запятой переменной типа double - C++

03.12.2010, 23:45. Просмотров 4064. Ответов 3
Метки нет (Все метки)

Здравствуйте!!! У меня есть 2 программы, одну мне дали вторую написал. Та программа которая была написана мной работает чуть чуть коряво
Задание такое есть какоето число допустим 12.34567...и т.д. мне нужно вывести на экран числа после запятой и через запятую тоесть 3,4,5,6,7...

вот код первой программы которую мне дали

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
using std::cout;
 
 
 
void main()
{
        double n = 3.1234567;
        double e = 0.0000001; //точность
        n = n - (int)n;
 
        do
        {
                n *= 10;
                cout << (int)n%10<< ", ";
        } while(n - (int)n >= e);
}
а это код который написал я

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>
#include<windows.h>
 
void main()
{
    SetConsoleOutputCP(1251);
 
    double a;
    cout<<"введите переменную double"<<"\n";
    cin>>a;
    a=a-(int)a;
    double e = 0.0000001;
 
 
 
while (a-(int)a>=e)
{
      a*=10;
      cout<<(int)a%10<< ", ";//если убрать %10 то будет выводить 1,2,3 цыфры
 
}
}
дело в том что программа работает только с числами у которых после запятой не больше 3х значений
как это исправить??? все дело в том что в первой программе использовался do while???
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2010, 23:45     Вывод числа после запятой переменной типа double
Посмотрите здесь:

Переменной d присвоить первую цифру после запятой некоторой переменной x типа float C++
В массиве double обрубаются знаки после запятой C++
C++ Тип double и количество символов после запятой
исправьте ошибку!округлить double до 2-х знаков после запятой C++
Вывод числа с ограниченным количеством знаков после запятой C++
Можно ли из числа типа double получить 2 числа типа int? C++
Точность в N знаков после запятой числа типа double C++
Как вывести double до 2 знаков после запятой? C++
Какая функция определяет количество знаков после запятой переменной double? C++
C++ Вывод числа типа double как есть
C++ Подсчет знаков после запятой в переменной double
C++ Как считать числа типа double с запятой вместо точки

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2914 / 1343 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
04.12.2010, 03:44     Вывод числа после запятой переменной типа double #2
Это из-за точности работы с числами с плавающей запятой. Пройдитесь по программе отладчиком и все поймете. Примерно с седьмого знака начинаются ошибки.
fasked
Эксперт C++
 Аватар для fasked
4929 / 2509 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
04.12.2010, 04:40     Вывод числа после запятой переменной типа double #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вообще так беспардонно приводить double к int не очень то правильно.
Я бы лучше сделал через строку, примерно так, только первую часть числа выпилить:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <algorithm>
#include <iterator>
#include <iostream>
#include <iomanip>
#include <sstream>
#include <string>
 
int main()
{
        double d = 3.12345678901234;
        std::ostringstream oss;
 
        oss << std::setprecision(9) << d;
 
        std::string s = oss.str();
        std::copy(s.begin(), s.end(), std::ostream_iterator<char>(std::cout, ", "));
        std::cout << std::endl;
 
        return 0;
}
woldzlo
1 / 1 / 0
Регистрация: 03.12.2010
Сообщений: 45
05.12.2010, 20:32  [ТС]     Вывод числа после запятой переменной типа double #4
спасибо
Yandex
Объявления
05.12.2010, 20:32     Вывод числа после запятой переменной типа double
Ответ Создать тему
Опции темы

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