![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 27.08.2010
Сообщений: 2
|
![]()
Здрасьте! Я совсем чайник, изучаю уроки по С++ на сайте programmersclub.ru. Попалась такая программка:
Код:
0 0,1 0,2 0,3 0,4 0,5 0,6 0,7 0,8 0,9, но не выводит 1? Ведь условие value<=1.0 выполняется? |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,089
|
![]()
Тут работа с числами с плавающей запятой. Особенность этих чисел - потеря точности. Скорее всего, получается в итоге число вида: 1.0000000000001, а оно больше, чем 1.0. Вообще нельзя числа типа float/double сравнивать нестрогим неравенством. Чтобы сравнить два вещественных числа на равенство, нужно делать поправку на погрешность расчетов.
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 28.01.2010
Сообщений: 224
|
![]()
Попробуй выделить тело цыкла
Код:
всему свое время как зиме и весне
и каждому солнцу свой неба кусок Последний раз редактировалось Assemblerru; 27.08.2010 в 21:14. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 02.02.2010
Сообщений: 599
|
![]()
Классический пример бесконечного цикла:
Код:
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
|
![]() |
![]() |
![]() |
#5 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
![]() Код:
|
![]() |
![]() |
![]() |
#6 | |
Форумчанин
Регистрация: 26.10.2009
Сообщений: 170
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
![]()
Или я бы тогда даже так сделал:
Код:
Ну а если обращаться все-таки к числам с плавающей точкой, то есть такая функция как epsilon - наименьшее число, такое что 1 + epsilon - 1 больше нуля. Находится она в шаблоне numeric_limits, соответственно, возвращает epsilon для того типа, который задан в качестве аргумента. На примере это выглядит так: Код:
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
![]() |
![]() |
![]() |
#8 |
Новичок
Джуниор
Регистрация: 27.08.2010
Сообщений: 2
|
![]()
Спасибо всем, кто ответил)
Вместо 1.0 поставила 1.01, помогло, теперь 1 выводится. Так что, видимо дело в погрешности было. Я абсолютный чайник, извините, не могу пока понять половину ответов. Но все равно спасибо, что потратили на меня свое время)) |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
не работает счетчик | zexxer | Общие вопросы Delphi | 2 | 26.05.2010 10:16 |
Как называется автономный USB счетчик информации? | Izhic | Компьютерное железо | 5 | 06.01.2010 20:14 |
счетчик в цикле изменяется не от 0 до 4 а от 4 до 0 | Ntlegend | Общие вопросы Delphi | 17 | 02.11.2009 00:59 |
Как вывести в цикле for ... do строки? | ViTYAi2007 | Помощь студентам | 14 | 27.03.2008 05:47 |
как выбрать значения в цикле в паскале | Melok | Помощь студентам | 5 | 14.12.2007 10:46 |