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

Вниз

Как корректно узнать, целое число или нет?   Найти похожие ветки 

 
pavor   (2011-05-13 09:34) [0]

Добрый день,
требуется решить задачу:
- если число содержит дробную часть - отображать его без изменений;
- если число не содержит дробной части - добавлять в конец ",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 - результат тот же.

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


 
Anatoly Podgoretsky ©   (2011-05-13 09:37) [1]


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

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


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

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



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

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

Наверх




Память: 0.47 MB
Время: 0.014 c
1-1263292251
Игорь_З
2010-01-12 13:30
2011.08.21
передача параметров из сишной dll


4-1249391200
DevilDevil
2009-08-04 17:06
2011.08.21
Создать пункт меню с иконкой. Желательно с альфаканалом


3-1263036650
Soi
2010-01-09 14:30
2011.08.21
SQL - функция получения длинны запрашиваемого поля


2-1305104750
Feamor
2011-05-11 13:05
2011.08.21
Ищу совета по функции AssignFile и ее работы в сети


8-1215281172
Дмитрий Белькевич
2008-07-05 22:06
2011.08.21
Фильтры деинтерлейса.