20:48:45

しばらくpocoのDateTimeが変なタイミングで日付が変わってしまう、という問題で悩んでた。必ず、20:48:45になると日付と曜日が一日進んでしまう、というもの。タイムゾーンとか、所謂時計周りのことなら必ず正時にずれるけど今回は違う。これは相当悩んだし、いろんな人を疑ったw
で、いろいろ調べていくうちに、Direct3DのCreateDeviceをしているところから日付が進むのに気づく。なんとなくだけど、ユリウス日->グレゴリア暦のカレンダーへの変換はやたらdoubleで計算されていたので、なんとなく浮動小数点の精度?とかは思っていたのだけど、これはこれで、なぜここから?!と疑問でしたが、MSDNなどによるとCreateDeviceするときにFPUの精度を設定してしまう、というのを見つけたよ。D3DCREATE_FPU_PRESERVE を付けたら直ったんだけど、性能が低下します、という注意書きもあるのでちょっと気になるなぁ。

コメント

  1. loopsketch より:

    自己レスだけど、これ、スレッドが変わると大丈夫だったりするな~。CreateDeviceしたメインスレッドだけ精度が変わってる感じ。

タイトルとURLをコピーしました