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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.80
Rexer
 Аватар для Rexer
151 / 150 / 19
Регистрация: 10.10.2010
Сообщений: 691
10.12.2011, 13:49     Точность типа double #1
Всем привет!
У меня такой код,точность как видите страдает,так как мне нужно с точностью до 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
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
10.12.2011, 14:25     Точность типа double #2
Это особенность представления чисел с плавающей точкой. Тут ничего не поделаешь. Либо так, либо использовать какие-нибудь другие форматы представления.
Rexer
 Аватар для Rexer
151 / 150 / 19
Регистрация: 10.10.2010
Сообщений: 691
10.12.2011, 14:56  [ТС]     Точность типа double #3
Какие типы вы посоветуете?
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
10.12.2011, 15:01     Точность типа double #4
Например, типы, описываемые стандартом http://speleotrove.com/decimal/. В стандартных библиотеках С/С++ их нет, так что гугли готовую реализацию или пиши ее сам (по ссылке есть реализации на С/С++).
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,126
Записей в блоге: 26
10.12.2011, 15:44     Точность типа double #5
Если не лень читать много букв, то пояснение на пальцах можно почитать в разделе 5 по ссылке
Неочевидные ответы на простые вопросы
Rexer
 Аватар для Rexer
151 / 150 / 19
Регистрация: 10.10.2010
Сообщений: 691
10.12.2011, 17:05  [ТС]     Точность типа double #6
читать никогда не лень.чем больше написано - тем больше узнаю
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2011, 17:13     Точность типа double
Еще ссылки по теме:

Почему точность Double такая же как у Float ? C++
C++ Запись информации из вектора типа string в вектор типа double
Точность в N знаков после запятой числа типа double C++

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

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

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