ошибки округления в TDateTime?
От: svg2003  
Дата: 26.08.08 02:12
Оценка:
похоже вылез очередной баг VCL-ля.
исходная задача: имеем TDateTime, из него нужно получить количество дней. компилятор bcc5.5.1.
логично было бы преобразовать его в int и в нём будет лежать количество дней, но cледующий код выдаёт:

31.12.1899
0.9999999999999995559
0

void Test()
{
    TDateTime t1 = 0;
    TDateTime t2( "01:00:00" );
    for(int i = 0; i < 24; ++i)
    {
        t1 += t2;
    }

    cout << t1.DateTimeString().c_str() << endl;
    cout << setprecision(30) << double( t1 ) << endl;
    cout << int( t1 ) << endl;
}


хотелось бы знать, где я ошибся, и что я делаю не так, а то у меня всё большее желание, отказаться от этого самого TDateTime во всех проектах в пользу самописного класса. на сравнениях уже накалывался, теперь вот это
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.