Здравствуйте, svg2003, Вы писали:
S>похоже вылез очередной баг VCL-ля.
int(0.9999999999999995559) и должен быть равен 0. Тут как раз всё верно.
Единственный ньюанс это небольшая неточность при конвертации из строки в число: TDateTime t2( "01:00:00" );
Но это вполне допустимо.
Работа с плавающей точкой требует аккуратности.
Например нельзя сравнивать числа с плавающей точкой на равестнство.
Вместо этого нужно сравнивать модуль разности чисел с константой точности.
Для Вашего примера характерна ещё одна неосторожность в работе с плавающей точкой — целочисленное откидывание дробной части (преобразование к инту)
Либо прибавляйте 0.5 к переменной t1 перед преобразованием к int, либо используйте функцию округления (trunc) вместо отбрасывания целой части (int).