информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Фишинговая атака на Python-разработчиков 
 ФБР нашла русский след в атаках... 
 Массовый взлом SharePoint 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[C++] вещественные переменные и 6-й builder 06.05.03 19:19  Число просмотров: 1260
Автор: Cyril <sc> Статус: Member
<"чистая" ссылка>
> double x[100];
> int i;
> for (i=0;i<100;i++)
> x[i]=-1+i*0.02;
>
> На очередном шаге вышеприведенного алгоритма x[i] должен по
> идее превратиться в ноль, но под 6-м билдером этого не
> происходит, в watche отображается страшнейшее число с с
> экпонентой в минус 61 степени (что-то типа того), кстати
> под VC 6.0 все нормально. Не подскажите в чем могут быть
> грабли?? Спасибо!

Если есть желание разобраться почему так происходить
сходи по ссылке

Неочевидные особенности вещественных чисел
<programming>
[C++] вещественные переменные и 6-й builder 06.05.03 11:46  
Автор: dron <Ivanov Andrey> Статус: Member
<"чистая" ссылка>
double x[100];
int i;
for (i=0;i<100;i++)
x[i]=-1+i*0.02;

На очередном шаге вышеприведенного алгоритма x[i] должен по идее превратиться в ноль, но под 6-м билдером этого не происходит, в watche отображается страшнейшее число с с экпонентой в минус 61 степени (что-то типа того), кстати под VC 6.0 все нормально. Не подскажите в чем могут быть грабли?? Спасибо!
[C++] вещественные переменные и 6-й builder 06.05.03 19:19  
Автор: Cyril <sc> Статус: Member
<"чистая" ссылка>
> double x[100];
> int i;
> for (i=0;i<100;i++)
> x[i]=-1+i*0.02;
>
> На очередном шаге вышеприведенного алгоритма x[i] должен по
> идее превратиться в ноль, но под 6-м билдером этого не
> происходит, в watche отображается страшнейшее число с с
> экпонентой в минус 61 степени (что-то типа того), кстати
> под VC 6.0 все нормально. Не подскажите в чем могут быть
> грабли?? Спасибо!

Если есть желание разобраться почему так происходить
сходи по ссылке

Неочевидные особенности вещественных чисел
[C++] вещественные переменные и 6-й builder 06.05.03 18:58  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> double x[100];
> int i;
> for (i=0;i<100;i++)
> x[i]=-1+i*0.02;
>
> На очередном шаге вышеприведенного алгоритма x[i] должен по
> идее превратиться в ноль, но под 6-м билдером этого не
> происходит, в watche отображается страшнейшее число с с
> экпонентой в минус 61 степени (что-то типа того), кстати
> под VC 6.0 все нормально. Не подскажите в чем могут быть
> грабли?? Спасибо!
Не может быть чтоб VC при сравнении такого числа с 0f возвращал true. Вообще при работе с вещественными числами принято не сравнивать с конкретным числом, а учитывать только некоторую точность. Например в данном случае можно делать не

if (x[i] == 0)

а

if (fabs(x[i]) < 1e-30)
[C++] вещественные переменные и 6-й builder 06.05.03 23:05  
Автор: paulm Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > под VC 6.0 все нормально.

Под VC++ не все нормально, а отрабатывает округление в окне watch.

Если вычисляется значение выражения, а не смотрится переменная, то возможны вообще чудеса. Однажды видел картину маслом: в трех местах отладчика VC++ (watch, всплывающий evaluate и, по-моему, immediate) было ТРИ разных значения одного и того-же выражения, отличающиеся на 2 порядка. А программа писала в файл четвертое :-) Как показало расследование все оказалось просто: выражение было численно неустойчиво и результат зависел от последовательности сложений/вычитаний и умножений/делений и вылечился вставкой избыточных скобок. Но картинка была прямо как в анекдоте: "Проверено. Мин нет. Минер Вася."
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach