Я пытаюсь обрабатывать данные интервала времени. Данные имеют два формата:Как представить геологическое время? (Boost, Date_time?)
1) каждый интервал явно установлен (например, 1982-12-31, 1988-01-01T00: 00: 00);
или
2) дата начала устанавливается с последующим смещениями секунд, минут, часов, дней, месяцев или лет
Я использую комбинацию boost::gregorian::date
и boost::posix_time::ptime
управлять этим , и использовать средства для получения красиво отформатированных строк. Тем не менее, теперь мне были представлены данные, охватывающие 1,9 миллиона лет, причем каждый момент времени составляет около 10 лет. Дата начала - 0, а последний интервал - 7e8. Очевидно, я попал в пределы.
Есть ли способ использовать Boost для представления такого масштаба? Мой поиск привел к выводу «нет», и в этом случае мы просто напишем собственный класс.
Это типичный компромисс между компьютером: точность против диапазона и потребляемая память. Если бы я был вами, я бы использовал структуру/класс, у которой есть int32 года с тех пор, как происходило (1950 год - популярный во многих геофизических контекстах) и time_t или int или что-то еще, что имеет секунды с начала года. – wallyk
Спросите разработчика Ruby. –
Я не знаю, в чем проблема. Вы не можете использовать двойной? Обычно секунды и минуты становятся менее интересными при измерении в течение десятилетий, но даже это не должно быть проблемой: даже в самом большом масштабе (7e8) ['double' должен оставлять значимые цифры для представления интервалов ~ 3 с.] (Http: //coliru.stacked-crooked.com/a/f0d628a07bfd19e2) – sehe