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

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

как определить, делится ли одно Double на другое Double нацело. [D7, XP, 2003]


Страницы:   1 2

SkyN ©   (2009-11-12 10:48:00) 

procedure TForm1.FormCreate(Sender: TObject);
var
 a,b: Double;
begin
 a := 1;
 b := 0.1;
 caption := FloatToStr( Frac (a/b) );
end;

Возвращает 0,999999999999 , а я надеялся увидеть 0, ну или близкое к 0 значение.

Понимаю почему так происходит, не могу понять как поправить.


SkyN   (2009-11-12 11:05:00) [21]

Пока я придумал только следующее

function ДелитьсяНацело(a,b: Double): Boolean;
var
 c: integer;
begin
 c := Round(a*100) mod Round(b*100)
 result :=  (c = 0);
end;

но т.к. работать она будет далеко не для всех входных параметров, применять её меня коробит.


SkyN   (2009-11-12 11:02:00) [22]

и как мне может помочь round, trunc ?

мне нужна такая функция
function ДелитьсяНацело(a,b: Double): Boolean;

a   b        result
1   0.1     true
1   0.09   false
1   0.11   false


brother   (2009-11-12 10:49:00) [23]

round, trunc ?


Страницы:   1 2

Наверх

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