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

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

Как корректно узнать, целое число или нет? [D7]


pavor ©   (2011-05-13 09:34:00) 

Добрый день,
требуется решить задачу:
- если число содержит дробную часть - отображать его без изменений;
- если число не содержит дробной части - добавлять в конец ',0';

То есть, если
на входе 2,3 -> отображаем 2,3, если
на входе 2 -> отображаем 2,0

Использую следующий код:
procedure TForm1.Button1Click(Sender: TObject);
var test: real;
dim:ShortString;
const eps=0.0001;
begin
memo1.Lines.Clear;

test:=2.3;
memo1.Lines.Add('test='+floattostr(test));
test:=test-0.3;
memo1.Lines.Add('test-0.3='+floattostr(test));

if ((test-trunc(test))<eps)
 then dim:=FloatToStr(test)+',0'
   else dim:=FloatToStr(test);

memo1.Lines.Add('trunc(test)='+IntToStr(trunc(test)));
memo1.Lines.Add('dim='+dim);

end;


Вот что он выводит:
test=2,3
test-0.3=2
trunc(test)=1
dim= 2

Вместо функции truncпробовал floor, int- результат тот же.

Понятно, что проблема связана с представлением вещественных чисел, но как ее решить - пока неясно.


pavor   (2011-05-13 09:44:00) [1]

Большое спасибо, работает. )


Anatoly Podgoretsky   (2011-05-13 09:37:00) [2]


> - если число содержит дробную часть - отображать его без
> изменений;
> - если число не содержит дробной части - добавлять в конец
> ',0';

Неправильное, грубое решение, просто освой Format. FormatFloat


Наверх

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