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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 48, средняя оценка - 4.73
Счастливчик
19 / 18 / 0
Регистрация: 04.08.2008
Сообщений: 31
09.11.2008, 00:21     Точность.Тип double #1
Вопрос такой. Пишу программу, в которой имеется цикл:

Код
 
double t=0, dt = 0.000001;
t = t + dt;
cout << "t --> " << t << endl << endl; 
  if(t==0.000005){
   break;
  }
После нескольких итераций программа печатает, что t = 5e-006, затем доходит до условия if и , однако, цикл не прекращает. Я не понимаю в чём тут проблема.
Может значение как то округляется? Но мне это не подходит, мне нужно именно 5 в минус шестой.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2008, 00:21     Точность.Тип double
Посмотрите здесь:

double округление с точность до N знаков C++
Точность типа double C++
точность возвращения функции long double C++
Почему точность Double такая же как у Float ? C++
C++ Тип double, ввод
Как сконвертировать свой тип в тип double? C++
Точность в N знаков после запятой числа типа double C++
Не могу преобразовать тип char в тип double C++
Теряется точность при вычислении с double C++
Double сокращение с точность до N знаков - C/C++ C++
Точность вычислений у double C++
Точность в double C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ABTOP
 Аватар для ABTOP
36 / 36 / 2
Регистрация: 09.06.2008
Сообщений: 324
09.11.2008, 00:52     Точность.Тип double #2
хм.. самое интересное что если ставить условие t==0.000002, t==0.000003 или t==0.000004 то всё работает нормально, а если поставить t==0.000005 то цыклиться... может если тебе просто подойдёт поставь:
Код
if(t>=0.000005)
  {
   break;
  }
конечно не совсем то но работает.. что бы работало нормально можешь поставить
Код
if(t>=0.000004)
  {
   break;
  }
в этом случае цыкл останавливаеться на значении 0.000005 как тебе и надо...
Yandex
Объявления
09.11.2008, 00:52     Точность.Тип double
Ответ Создать тему
Опции темы

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