Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/34: Рейтинг темы: голосов - 34, средняя оценка - 4.76
7 / 7 / 1
Регистрация: 20.10.2009
Сообщений: 112

Число double 0.1 на самом деле не 0.1

11.06.2013, 23:20. Показов 6538. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Кто сталкивался с таким глюком, почему если я задаю
C++
1
double x=0.1;
в дебаггере я его вижу как 0.10000000000000001 ?
я знал что float неточные числа, но что double...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.06.2013, 23:20
Ответы с готовыми решениями:

Сколько разрядов у константы типа double Math.PI на самом деле?
Почему для константы типа double Math.PI приведено тут её значение 3,14159265358979323846 с числом разрядов (21) , что существенно...

Быстробот - на самом деле БЫСТРО!!!
Уже второй раз удивлен оперативностью Яндекса!!! Начинаю двигать сайт - на следующий день Яндекс его индексирует. Двигал - только...

На самом деле #define'а нету.
На самом деле #define нету. Вот например если мы напишем в c++ #define yes 1 #define no 0 то на самом деле мы получим int yes=1; ...

12
 Аватар для Мимино
191 / 161 / 35
Регистрация: 22.05.2013
Сообщений: 455
Записей в блоге: 1
11.06.2013, 23:32
переменная double имеет двойную точность
Двойная точность
0
7 / 7 / 1
Регистрация: 20.10.2009
Сообщений: 112
11.06.2013, 23:35  [ТС]
а ещё точнее числа есть?
мне не столько офигенная точность нужна, сколько при цикле типа
C++
1
2
3
4
5
for (double i=1.0;i<2.4;i+=0.1){
   if (i==2.0) {
       ///что нибудь
   }
}
это что нибудь - никогда не произойдет
0
 Аватар для Мимино
191 / 161 / 35
Регистрация: 22.05.2013
Сообщений: 455
Записей в блоге: 1
11.06.2013, 23:36
а для чего нужен такой цикл?
0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
11.06.2013, 23:37
недавно подробно обсуждали этот вопрос, он не относиться к определенному языку программирования
От перемены мест слагаемых сумма меняется
0
7 / 7 / 1
Регистрация: 20.10.2009
Сообщений: 112
11.06.2013, 23:37  [ТС]
Цитата Сообщение от Мимино Посмотреть сообщение
а для чего нужен такой цикл?
там же где и всегда - в институте на лабах))))))
0
 Аватар для Мимино
191 / 161 / 35
Регистрация: 22.05.2013
Сообщений: 455
Записей в блоге: 1
11.06.2013, 23:41
Цитата Сообщение от RimoBlack Посмотреть сообщение
там же где и всегда - в институте на лабах))))))
Замените на
C++
1
2
3
4
5
for (int i = 0; i < 14; i++){
   if (i == 10) {
       ///что нибудь
   }
}
0
7 / 7 / 1
Регистрация: 20.10.2009
Сообщений: 112
11.06.2013, 23:42  [ТС]
Цитата Сообщение от Мимино Посмотреть сообщение
Замените на
C++
1
2
3
4
5
for (int i = 0; i < 14; i++){
   if (i == 10) {
       ///что нибудь
   }
}
именно таким же способом я и выкрутился
зато теперь буду знать что нельзя сравнивать (на тождество) числа с плавающей запятой
0
Антикодер
Эксперт функциональных языков программирования
1888 / 870 / 48
Регистрация: 15.09.2012
Сообщений: 3,088
11.06.2013, 23:43
если вы ещё не почитали мою ссылку то ключевая фраза там

-- вместо этого:

if (a == b) then ...

-- писать

if (abs (a-b)) < 1.0E-8 then ...
0
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
11.06.2013, 23:46
Вся причина в представлении чисел с плавающей точкой.Дело в том,что в число с плавающей точкой как бы разбивается на два ,целую и дробную и представляется в экспоненциальном веде т.е целое число * 10 - какой то степени.И поэтому 0 вовсе и не 0,а какое то очень маленькое число.Помогает округление до нужного знака.Округлять можно по разному.Я пользуюсь либо модификатором
C++
1
setprecision(3)
в потоке вывода либо
C++
1
 floor (s + 0.5 / 1000)*1000;
0
7 / 7 / 1
Регистрация: 20.10.2009
Сообщений: 112
11.06.2013, 23:50  [ТС]
Цитата Сообщение от XRuZzz Посмотреть сообщение
если вы ещё не почитали мою ссылку то ключевая фраза там
читал, и вспомнил что что-то похоже я уже делал, когда нужно было найти сумму ряда до определенного знака, но вспомнил только когда открыл ссылку
0
 Аватар для BumerangSP
4311 / 1423 / 463
Регистрация: 16.12.2010
Сообщений: 2,939
Записей в блоге: 3
12.06.2013, 00:45
RimoBlack, почитайте про представление вещественных чисел в компьютере, а также погрешности вычислений, округлений (их виды и т.д.).
0
7 / 7 / 1
Регистрация: 20.10.2009
Сообщений: 112
12.06.2013, 00:46  [ТС]
Цитата Сообщение от BumerangSP Посмотреть сообщение
RimoBlack, почитайте про представление вещественных чисел в компьютере, а также погрешность вычислений (их виды и т.д.).
Спасибо, теорию я знаю, но вспоминаю я её только когда в тупик захожу. Как никак 6 курс уже, позабывал уже многое...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.06.2013, 00:46
Помогаю со студенческими работами здесь

ошибки которых на самом деле нет
possible use of идентификатор before diffinotion(С++) у меня в компиляторе возникает такое предупреждение, хотя все переменные объявлены...

А есть ли этот вИЦ на самом деле?
Мне кажется, все наслышаны о пресловутом вИЦ Яндекса и очень многие сломали головы как этот вИЦ поднять и т.п. ... Вот короткая...

Что такое string на самом деле?
Всем привет! Столкнулся с проблемой и никак не могу разобраться. Мне необходимо из строки string str получить unsignet char* для...

что же на самом деле делает strcpy?
вот такой пример #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main () { string buff; buff += &quot;what...

Как на самом деле отключить Метро?
В инете пишут : 1. Удалить (переименовать) \windows\system32\shsxs.dll . Но у меня его нет! 2. Параметр...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru