Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

cos(1/2*pi)=-4.3711388287e-08 [D6, XP]


Mr tray ©   (2006-08-04 19:34:00) 

Столкнулся с такой вот вешью. x:=cos(1/2*pi) получаю x=-4.3711388287e-08. на самом деле конинус пи на два равен ноль. по сути x очень мал, и в дальнейших вычинслениях эта погрешность не играет роли. но  x<0 возвращает true, что мне совсем не нравится. как можно избежать этой погрешности или как с ней бороться?


Rial   (2006-08-05 16:26:00) [1]

Const
       PracizConst = 1E-16;

function Praciz(Const A, B : Extended) : Boolean;
begin
Result:=Abs(A - B) < PracizConst;
end;


Don Nikola   (2006-08-05 11:39:00) [2]

2RzCoDer:
Могу ошибаться, но вроде pi уже в радианах.

2MrTray:
Сравнивай с епсилоном или делай округление.


RzCoDer   (2006-08-04 23:22:00) [3]

x:=cos(DegToRad(1/2*pi));


Mr tray   (2006-08-04 22:25:00) [4]

Ясно. так и быть. буду принимать сей мир со всеми его приколами


palva   (2006-08-04 20:15:00) [5]

> как можно избежать этой погрешности или как с ней бороться?
Этой погрешности нельзя избежать. Ведь даже аргумент 1/2*pi вы задали с небольшой погрешностью. Чего же вы хотите от функции? И бороться с этим тоже не надо. Нужно принимать мир таким, каков он есть.


Ega23   (2006-08-04 19:48:00) [6]

Определение, допустим, предела по Коши помнишь?


Наверх

Титульная страница Поиск, карта сайта Написать письмо