Здравствуйте! Не могу разобраться, почему не выводится I = 2 (см. приложение)??? В чем причина? Заранее спасибо. (компилятор - BP7.0, Delphi 7 - и там и там одно и то же)
Приветствую Вас, savnick! Из-за того, что у Вас х имеет тип REAL, оно может никогда не равняться точно 1 из-за погрешности операций чисел с плавающей запятой. Т.е. на экране Вы можете видеть что-то типа: х=1,00000000000000+0000 а на самом деле у Вас: х=0,000000000000009 Из-за округления младших разрядов. :) Ответ отправлен: 08.11.2004, 09:35 Отправитель: sir henry Отвечает Tancho
Доброе время суток, savnick! Надо иметь в виду что действителнные чисель представляется в компютере не в непрерыйвном виде, как континиум, а в дискретном виде!Так что в зависимусти от языку и типа чисел в ему, существуеть минимальный шаг для каждого типа представления с котором отличается соседние чисель!Так что надо проверку идти не как if x = 1 then ..., а как if abs(x-1)< eps then ... , где eps число больше минимального шага с котором отличается чисель данного типа! Смотри в приложении как я предлагаю вести проверку, тогда все как тебе нужно!
Приложение: Ответ отправлен: 08.11.2004, 10:50 Отправитель: Tancho Отвечает Boriss
Доброе время суток, savnick! А Вы чуть-чуть измените свою программу и сами поймете (такие проблемы возникают из-за конечного числа ячеек памяти, отводимых для хранения числа в памяти ЭВМ) Я добавил только вывод значения Х.
Приложение: Ответ отправлен: 09.11.2004, 09:24 Отправитель: Boriss Отвечает DSota
Доброе время суток, savnick! А это ошибка в рассчетах накопилась за 5 проходов:
Приложение: Ответ отправлен: 09.11.2004, 15:03 Отправитель: DSota
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.