Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.16;
Скачать: CL | DM;

Вниз

Real type   Найти похожие ветки 

 
Axis_of_Evil ©   (2005-09-26 16:50) [0]

вопрос =
0) x: Real;
   if (x = 1.123) then;
очевидно неверно, т.к. точное равенство получается в
случаях, когда число представимо в виде конечной двоичной дроби.

1) x := 0.0;
   if (x = 0.0) then;
можно ли так?
// будет ли х точным нулем? (аки константа +-infinity)
зависит ли от чего-либо? // cross-(platform/compiler)


 
umbra ©   (2005-09-26 16:55) [1]

Если использовать нецеліе числа, то сравнивать их надо функциями

function SameValue(const A, B: Single; Epsilon: Single = 0): Boolean; overload;
function SameValue(const A, B: Double; Epsilon: Double = 0): Boolean; overload;
function SameValue(const A, B: Extended; Epsilon: Extended = 0): Boolean; overload;

из модуля Math


 
Axis_of_Evil ©   (2005-09-26 17:39) [2]

мораль =
 ошибка происходит при закидывании переменной типа Real (8 bytes)
 в FPU (10 bytes), с типом Extended (10 bytes) проблем меньше
т.е.
===========
x: Extended;
y: Real;
begin
 y := 1.12134;
 x := 1.12134;
 if (x = y) then
   write("!");
 readln;
===========
не выдаст "!"

но

===========
x: Extended;
begin
 x := 1.12134;

 if (x = 1.12134) then
   write("!");
 readln;
===========
работает

пример же
===========
y: Real;
begin
 y := 1.12134;
 if (н = 1.12134) then
   write("!");
 readln;
===========
не работает

что и трнбовалось осознать.
на вопрос топика не ответил:>



Страницы: 1 вся ветка

Текущий архив: 2005.10.16;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.077 c
4-1124011803
Denis_Ac
2005-08-14 13:30
2005.10.16
Hook Chain


11-1108062669
Unknown Mystic
2005-02-10 22:11
2005.10.16
TVM_GETIMAGELIST в NewTreeView (модуль KOL.PAS)


3-1125917057
oradb
2005-09-05 14:44
2005.10.16
Blob, как параметр хранимой процедуры


3-1125652771
Nickolay
2005-09-02 13:19
2005.10.16
Простейшие операции с таблицами БД Access с помощью ADO


14-1127494275
asdqwer
2005-09-23 20:51
2005.10.16
Постриженный или поДстриженный?