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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.80
Rexer
164 / 163 / 20
Регистрация: 10.10.2010
Сообщений: 725
#1

Точность типа double - C++

10.12.2011, 13:49. Просмотров 3226. Ответов 6
Метки нет (Все метки)

Всем привет!
У меня такой код,точность как видите страдает,так как мне нужно с точностью до 20 знака
C++
1
2
3
4
5
6
7
8
9
10
#include<iostream>
#include<iomanip>
using namespace std;
 
int main()
{
    double a = 0.001;
    cout << setprecision(20) << a << endl;
    return 0;
}
Результат
0.0010000000000000000208
Отсюда вопрос
1)Почему такая точность?Откуда берутся числа 2 и 8?По идее должно быть что-то типа 0.00...001
С такой точностью через пару тысяч итераций у меня получится большая погрешность.
Как решить вопрос?

Компилятор MinGW
Всем заранее спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2011, 13:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Точность типа double (C++):

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

Аргумент типа double несовместим с параметром типа double* - C++
Функция function должна возвращать количество элементов массива, значение которые превышает значение средне арифметического элементов...

Аргумент типа double несовместим с параметром типа double - C++
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;math.h&gt; using namespace std; #define c 40 #define n 5 double po(double...

Точность в double - C++
Добрый день Мне задали сделать проект в универе - Калькулятор с великой точностю. Я уже почти его сделал, но у меня возникла...

Точность вычислений у double - C++
Дана задача: &quot;Определить, на сколько нулей заканчивается факториал числа n&quot;. Пример: вводим &quot;25&quot;, на выходе должны получить &quot;6&quot; (25! =...

Точность.Тип double - C++
Вопрос такой. Пишу программу, в которой имеется цикл: double t=0, dt = 0.000001; t = t + dt; cout &lt;&lt; &quot;t --&gt; &quot; &lt;&lt; t &lt;&lt; endl...

6
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
10.12.2011, 14:25 #2
Это особенность представления чисел с плавающей точкой. Тут ничего не поделаешь. Либо так, либо использовать какие-нибудь другие форматы представления.
1
Rexer
164 / 163 / 20
Регистрация: 10.10.2010
Сообщений: 725
10.12.2011, 14:56  [ТС] #3
Какие типы вы посоветуете?
0
Nameless One
Эксперт С++
5777 / 3427 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
10.12.2011, 15:01 #4
Например, типы, описываемые стандартом http://speleotrove.com/decimal/. В стандартных библиотеках С/С++ их нет, так что гугли готовую реализацию или пиши ее сам (по ссылке есть реализации на С/С++).
1
Evg
Эксперт CАвтор FAQ
18446 / 6496 / 454
Регистрация: 30.03.2009
Сообщений: 18,122
Записей в блоге: 29
10.12.2011, 15:44 #5
Если не лень читать много букв, то пояснение на пальцах можно почитать в разделе 5 по ссылке
Неочевидные ответы на простые вопросы
1
Rexer
164 / 163 / 20
Регистрация: 10.10.2010
Сообщений: 725
10.12.2011, 17:05  [ТС] #6
читать никогда не лень.чем больше написано - тем больше узнаю
0
-=ЮрА=-
Заблокирован
Автор FAQ
10.12.2011, 17:13 #7
Rexer, у дабла больше 12 чисел после запятой точности вам не найти(этот тип держит разряды только до 12-го знака после запятой, будет 10 в минус 13 и всё число эквивалентно нулю), как небольшую подсказку предлагаю вам топик
Вычислить и напечатать обратные целых чисел
1
10.12.2011, 17:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2011, 17:13
Привет! Вот еще темы с ответами:

Double сокращение с точность до N знаков - C/C++ - C++
Хочу написать программу сокращающую число знаков после запятой на какое-то определённое количество заданное с клавиатуры (n). Пробовал...

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

Теряется точность при вычислении с double - C++
Доброго времени суток. В процессе решения кубического уравнения, у меня теряется точность переменной типа double. Пробовал использовать...

точность возвращения функции long double - C++
есть число a long double надо написать чтобы фунция возвращала число до 25 знака после запятой то есть return a.%25; (как...


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

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

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