Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2014, 10:17   #1
dreary999
Пользователь
 
Регистрация: 19.05.2014
Сообщений: 18
По умолчанию RoundTo

Подскажите, как при сравнении данных из таблицы правильно прописать округление с помощью roundto ?
Код:
var
  i: integer;
begin
for i := 1 to n3 do
  if itog[10,i] = FloatToStr(StrToFloat(itog[10,i]) - StrToFloat(itog[9,i]) + StrToFloat(itog[15,i]))
  then
  begin itog[16,i] := 'Совпадает'; StringGrid3.Cells[6,i] := itog[16,i]; end
    else begin itog[16,i] :=  'Не совпадает'; StringGrid3.Cells[6,i] := itog[16,i]; end;
end;
Округлить нужно подчеркнутое. Причем в меньшую сторону при любом значении знаков после запятой.
Главное уметь превращать баги в фичи

Последний раз редактировалось Stilet; 02.06.2014 в 10:50.
dreary999 вне форума Ответить с цитированием
Старый 02.06.2014, 10:24   #2
dreary999
Пользователь
 
Регистрация: 19.05.2014
Сообщений: 18
По умолчанию

Предпочтительнее даже было бы округлить в меньшую сторону все сравниваемые ячейки
Главное уметь превращать баги в фичи
dreary999 вне форума Ответить с цитированием
Старый 02.06.2014, 10:28   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Trunc отсекает знаки после десятичной точки
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.06.2014, 10:58   #4
dreary999
Пользователь
 
Регистрация: 19.05.2014
Сообщений: 18
По умолчанию

Не могли бы Вы показать использование Trunc на моем примере?
Главное уметь превращать баги в фичи
dreary999 вне форума Ответить с цитированием
Старый 02.06.2014, 12:09   #5
dreary999
Пользователь
 
Регистрация: 19.05.2014
Сообщений: 18
По умолчанию

Код:
  begin

 
for i := 1 to n3 do


  if floattostr(Trunc(strtofloat(itog[10,i]))) = FloatToStr(Trunc(StrToFloat(itog[10,i])) - trunc(StrToFloat(itog[9,i])) + trunc(StrToFloat(itog[15,i])))
  then
  begin itog[16,i] := 'Совпадает'; StringGrid3.Cells[6,i] := itog[16,i]; end
    else
    begin itog[16,i] :=  'Не совпадает'; StringGrid3.Cells[6,i] := itog[16,i]; end;
end;
Вышло что то вроде этого... Сейчас тестирую.
Главное уметь превращать баги в фичи
dreary999 вне форума Ответить с цитированием
Старый 02.06.2014, 12:21   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
if Trunc(strtofloat(itog[10,i])) = Trunc(StrToFloat(itog[10,i])) - trunc(StrToFloat(itog[9,i])) + trunc(StrToFloat(itog[15,i]))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 02.06.2014, 13:52   #7
dreary999
Пользователь
 
Регистрация: 19.05.2014
Сообщений: 18
Хорошо

Большое спасибо, все работает
Главное уметь превращать баги в фичи
dreary999 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Округление RoundTo с числами типа: E-5 Polotenchik Общие вопросы Delphi 3 27.08.2009 22:30