Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> период времени, период времени 
:(
    Опции темы
lotax
  Дата 18.4.2011, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 18.4.2005
Где: KZ

Репутация: нет
Всего: нет



Как правильно вычислить период времени?

Данная функция почему-то за период 10:00 - 10:30 возвращает 00:29:29,
хотя за другой период например 11:00 - 11:30 возвращает корректно 00:30:00,


Код

uses DateUtils;

function SecToTime(Sec: Integer): TTime;
var
  H, M, S: INTEGER;
  HS, MS, SS: string;
begin
  S := Sec;
  M := Round(INT(S / 60));
  S := S - M * 60; //Seconds
  H := Round(INT(M / 60)); //Hours
  M := M - H * 60; //Minutes
  if H < 10 then
    HS := '0' + Inttostr(H)
  else
    HS := inttostr(H);
  if M < 10 then
    MS := '0' + Inttostr(M)
  else
    MS := inttostr(M);
  if S < 10 then
    SS := '0' + inttostr(S)
  else
    SS := inttostr(S);
  RESULT := StrToTime(HS + ':' + MS + ':' + SS);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  B,E: TTime;
begin
  B := StrToTime('10:00');
  E := StrToTime('10:30');
  Label1.Caption := TimeToStr(SecToTime(SecondsBetween(B,E)));
end;



--------------------
Говори, что думаешь и думай, что говоришь.
PM MAIL ICQ   Вверх
Snowy
Дата 18.4.2011, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Это шуточки банковского округления.
В Intel почему-то считают, что округлять нужно по банковским правилам, а не по правилам математики.
Варианты, как с этим бороться: http://forum.vingrad.ru/index.php?showtopic=44984
PM MAIL   Вверх
lotax
Дата 18.4.2011, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 18.4.2005
Где: KZ

Репутация: нет
Всего: нет



Цитата(Snowy @  18.4.2011,  16:12 Найти цитируемый пост)
Это шуточки банковского округления.
В Intel почему-то считают, что округлять нужно по банковским правилам, а не по правилам математики.
Варианты, как с этим бороться: http://forum.vingrad.ru/index.php?showtopic=44984 


из ветки я так понял решение ?

Код

Set8087CW(Default8087CW or $0800) Round(2.5)

 

--------------------
Говори, что думаешь и думай, что говоришь.
PM MAIL ICQ   Вверх
Snowy
Дата 18.4.2011, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Там много вариантов.
Выбирай сам какой больше нравится.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0464 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.