boost ::date_durationをdoubleに変換する方法はありますか?私は次のコードを持っています:
date be;
date bd;
days t = (be - bd);
std::cout << "days are:" << t << std::endl;
これは正常に機能し、noを返します。日の。しかし、私は年単位の値を取得したいので、tを365で割ると、0しか表示されsetprecision()
ません。どちらも役に立ちませんでした。
boost ::date_durationをdoubleに変換する方法はありますか?私は次のコードを持っています:
date be;
date bd;
days t = (be - bd);
std::cout << "days are:" << t << std::endl;
これは正常に機能し、noを返します。日の。しかし、私は年単位の値を取得したいので、tを365で割ると、0しか表示されsetprecision()
ません。どちらも役に立ちませんでした。
あなたはおそらくboost::gregorian::days
オーバーロードという事実にとらわれていますoperator/
。最初に を使用して整数に変換し、days()
次に浮動小数点値で除算して浮動小数点除算を取得します。
#include <iostream>
#include <boost/date_time.hpp>
int main()
{
boost::gregorian::date be(2000, 1, 1), bd(1950, 1, 1);
boost::gregorian::days t = be - bd;
std::cout << "days are: " << t << '\n'
<< "days/365 = " << t.days()/365.0 << '\n';
}
出力に注意してください。1 年は 365.00 日ではないため、結果は年数と等しくありません。