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

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

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

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

10.12.2011, 13:49. Просмотров 2870. Ответов 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
Всем заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2011, 13:49     Точность типа double
Посмотрите здесь:

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

Точность в 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...

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
10.12.2011, 14:25     Точность типа double #2
Это особенность представления чисел с плавающей точкой. Тут ничего не поделаешь. Либо так, либо использовать какие-нибудь другие форматы представления.
Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 724
10.12.2011, 14:56  [ТС]     Точность типа double #3
Какие типы вы посоветуете?
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,444
10.12.2011, 15:01     Точность типа double #4
Например, типы, описываемые стандартом http://speleotrove.com/decimal/. В стандартных библиотеках С/С++ их нет, так что гугли готовую реализацию или пиши ее сам (по ссылке есть реализации на С/С++).
Evg
Эксперт CАвтор FAQ
17470 / 5708 / 363
Регистрация: 30.03.2009
Сообщений: 15,670
Записей в блоге: 26
10.12.2011, 15:44     Точность типа double #5
Если не лень читать много букв, то пояснение на пальцах можно почитать в разделе 5 по ссылке
Неочевидные ответы на простые вопросы
Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 724
10.12.2011, 17:05  [ТС]     Точность типа double #6
читать никогда не лень.чем больше написано - тем больше узнаю
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2011, 17:13     Точность типа double
Еще ссылки по теме:

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

Почему точность Double такая же как у Float ? - C++
Вначале столкнулся с проблемой float: time=65536.0f; (можно и больше число указать) time+=0.003; Тут time не меняетя! Оно меняется,...

Предельная точность типа данных - C++
unsigned int ui; int i; float f; i=-1; ui=i; f=ui; printf(&quot;F=%f\n&quot;,f); f=f+1; printf(&quot;F=%f\n&quot;,f);

Можно ли из числа типа double получить 2 числа типа int? - C++
Если можно, то напишите пожайлуста название функции или способ.

Задача типа double.C++ - C++
Сделать тип doubl который возвращает квадратный корень произведения первого на второй.(произведение не должно быть отрицательным). Не...


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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
10.12.2011, 17:13     Точность типа double #7
Rexer, у дабла больше 12 чисел после запятой точности вам не найти(этот тип держит разряды только до 12-го знака после запятой, будет 10 в минус 13 и всё число эквивалентно нулю), как небольшую подсказку предлагаю вам топик
Вычислить и напечатать обратные целых чисел
Yandex
Объявления
10.12.2011, 17:13     Точность типа double
Ответ Создать тему
Опции темы

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