Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


Информационный Канал Subscribe.Ru

RusFAQ.ru: Программирование на языке Pascal

Выпуск № 340
от 11.11.2004, 16:20

Администратор:
Имя: Sensey
URL: Информационный ресурс
ICQ: 105679124
Украина, Харьков
О рассылке:
Задано вопросов: 541
Отправлено ответов: 2056
Активность: 380.0 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

sir henry
Статус: Профессиональный
Общий рейтинг: 163.87
[Подробней >>]
Tancho
Статус: Профессиональный
Общий рейтинг: 143.88
Телефон: сл. 0359 0391 65 631; 0359 0391 53 105
[Подробней >>]
Boriss
Статус: Профессиональный
Общий рейтинг: 156.08
URL: Программирование на Паскале
[Подробней >>]
 
DSota
Статус: Доверительный
Общий рейтинг: 122.58
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 540. Здравствуйте! Не могу разобраться, почему не выводится I = 2 (см. приложение)??? В чем причина? Заранее спасибо. (компилятор - BP7.0, Delphi 7 - и там и там одно и то же)... (ответов: 4)

Вопросов: 1, ответов: 4


 Вопрос № 540

Здравствуйте!
Не могу разобраться, почему не выводится I = 2 (см. приложение)??? В чем причина?
Заранее спасибо.
(компилятор - BP7.0, Delphi 7 - и там и там одно и то же)


Приложение:


Вопрос отправлен: 08.11.2004, 08:06
Отправитель: savnick

[Следующий вопрос >>] [Список вопросов]

Отвечает sir henry

Приветствую Вас, 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.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (24)
C / C++ (16)
Perl (6)
Builder / Delphi (14)
Pascal (18)
Basic / VBA (9)
Java / JavaScript (6)
PHP (16)
Криптография (6)
WinAPI (17)
Радиоэлектроника (12)
Пользователю
Windows 95/98/Me (40)
Windows NT/2000/XP (61)
"Железо" (39)
Поиск информации (20)
Администратору
Windows NT/2000/XP (37)
Linux / Unix (18)
Юристу
Гражданское право (8)
Семейное право (5)
Трудовое право (7)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.





http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.pasplus
Отписаться

В избранное