Я понимаю что сравивать два вещественных числа = "тыкать пальцем в небо". Ошибку свою понял но несовсем.
Как я понял делфи считает что 5/0,1<50
Интересно как она называется и охото узнать правила недопущения подобных ошибок, а также представление типа double в памяти.
Вот моя модификация
Код:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils,
math;
function myFloor(x:double):integer;
begin
if x>0 then result:=trunc(x)
else result:=trunc(x)-1;
end;
procedure proc;
var a,b:double;
c,d:integer;
begin
a:=0.1;
b:=5;
c:=myFloor(b/0.1);
d:=myFloor(b/a);
writeln(c);
writeln(d);
end;
begin
proc;
readln;
end.
результат
50
50
Застрахован ли такой подход от аналогичной ошибки при других значениях?