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

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

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

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

10.12.2011, 13:49. Просмотров 2641. Ответов 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
Всем заранее спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5760 / 3409 / 255
Регистрация: 08.02.2010
Сообщений: 7,406
10.12.2011, 14:25     Точность типа double #2
Это особенность представления чисел с плавающей точкой. Тут ничего не поделаешь. Либо так, либо использовать какие-нибудь другие форматы представления.
Rexer
 Аватар для Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 723
10.12.2011, 14:56  [ТС]     Точность типа double #3
Какие типы вы посоветуете?
Nameless One
Эксперт С++
 Аватар для Nameless One
5760 / 3409 / 255
Регистрация: 08.02.2010
Сообщений: 7,406
10.12.2011, 15:01     Точность типа double #4
Например, типы, описываемые стандартом http://speleotrove.com/decimal/. В стандартных библиотеках С/С++ их нет, так что гугли готовую реализацию или пиши ее сам (по ссылке есть реализации на С/С++).
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17188 / 5442 / 337
Регистрация: 30.03.2009
Сообщений: 14,758
Записей в блоге: 26
10.12.2011, 15:44     Точность типа double #5
Если не лень читать много букв, то пояснение на пальцах можно почитать в разделе 5 по ссылке
Неочевидные ответы на простые вопросы
Rexer
 Аватар для Rexer
163 / 162 / 20
Регистрация: 10.10.2010
Сообщений: 723
10.12.2011, 17:05  [ТС]     Точность типа double #6
читать никогда не лень.чем больше написано - тем больше узнаю
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2011, 17:13     Точность типа double
Еще ссылки по теме:

C++ Аргумент типа double несовместим с параметром типа double
Double сокращение с точность до N знаков - C/C++ C++
Точность вычислений у double C++
Аргумент типа double несовместим с параметром типа double* C++
Точность в double C++

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

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

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