Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

03.12.2010, 23:45. Просмотров 4700. Ответов 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???
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2010, 23:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вывод числа после запятой переменной типа double (C++):

Точность в N знаков после запятой числа типа double - C++
Добрый день, уважаемы форумчане! Возникла проблема, заключающаяся в изменении значения, получающегося в результате выполнения функции...

Подсчет знаков после запятой в переменной double - C++
Не получается, так как в double числа хранятся не точно, и на моменте, когда i == 3345333, d == 3345333.0000000004 и программа...

Переменной d присвоить первую цифру после запятой некоторой переменной x типа float - C++
Нужно целой переменной d присвоить первую цыфру после комы некоторой переменной x типа float Скажите, пожалуйста, с чего начать и по...

Какая функция определяет количество знаков после запятой переменной double? - C++
У меня есть программа, которая считает сумму ряда, в неё вводится значение x, точность, с которой определяется значение ln(x) и по формуле...

Как считать числа типа double с запятой вместо точки - C++
Нужно через fstream считать числа double. Если ставить точки после целой части, то считывает нормально, а при запятых начинаются проблемы

Вывод числа типа double как есть - C++
Кто-нибудь помогите понять тип double!!! Как вывести заданное число как оно есть? Например, записываем в f число 14049.30493 то нужно...

3
lemegeton
2931 / 1360 / 136
Регистрация: 29.11.2010
Сообщений: 2,725
04.12.2010, 03:44 #2
Это из-за точности работы с числами с плавающей запятой. Пройдитесь по программе отладчиком и все поймете. Примерно с седьмого знака начинаются ошибки.
0
fasked
Эксперт С++
4974 / 2554 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
04.12.2010, 04:40 #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;
}
0
woldzlo
1 / 1 / 0
Регистрация: 03.12.2010
Сообщений: 49
05.12.2010, 20:32  [ТС] #4
спасибо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2010, 20:32
Привет! Вот еще темы с ответами:

Вывод числа с ограниченным количеством знаков после запятой - C++
float m; m = (6.0221412927*pow(10,23.0))/23; cout &lt;&lt;&quot;Количество атомов в 1 мг Натрия = &quot;&lt;&lt;m&lt;&lt;endl&lt;&lt;endl; Как...

В массиве double обрубаются знаки после запятой - C++
Всем привет и хорошего настроения! Мой вопрос: почему при выводе простого массива, элементы которого типа double, уменьшается количество...

Как вывести double до 2 знаков после запятой? - C++
Нужно вывести число до 2 знаков после запятой. Попробовал так: 1) round(a*100)/100; 2) out.precision(2); out&lt;&lt;a; Мне...

Тип double и количество символов после запятой - C++
Здравствуйте, уважаемые я дико нуб, поэтому помогите чем можете ) суть такова: тип переменной double необходимо сделать так,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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