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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 33, средняя оценка - 4.85
woldzlo
1 / 1 / 0
Регистрация: 03.12.2010
Сообщений: 45
03.12.2010, 23:45     Вывод числа после запятой переменной типа double #1
Здравствуйте!!! У меня есть 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)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2909 / 1338 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
04.12.2010, 03:44     Вывод числа после запятой переменной типа double #2
Это из-за точности работы с числами с плавающей запятой. Пройдитесь по программе отладчиком и все поймете. Примерно с седьмого знака начинаются ошибки.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 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
Ответ Создать тему
Опции темы

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