次の形式で時間の文字列表現を返すメソッドがあります。_HH:MM:SS.sssこのメソッドは、マイクロ秒単位のuint64_t時間を引数として取ります。時間と分を簡単に分割できますが、秒に関しては、秒の端数も取得できるように、2倍にキャストする必要があります。
サンプルコード:
std::string getDurationTime(uint64_t time){
std::string returnTime="";
uint64_t tempTime = time;
uint64_t hours = (tempTime / 3600000000);
tempTime -= (hours * 3600000000);
uint64_t minutes = (tempTime / 60000000);
tempTime -= (minutes * 60000000);
double seconds = (double(tempTime) / 1000000);
stringstream timeOut;
timeOut<<std::setw(2)<<std::setfill('0')<<hours<<":"<<std::setw(2)<<std::setfill('0')<<minutes<<":"<<std::fixed<<std::setw(6)<<std::setprecision(3)<<std::setfill('0')<<seconds;
returnTime = "_" + timeOut.str();
return returnTime;
}
したがって、103566のような数値は_00:00:00:104の値を返す必要がありますが、代わりに_00:00:00:103を返します。秒にブレークポイントを設定すると、値は0.103499999になります。この精度を調整するための標準的な手法はありますか?結果の秒に.000001を追加すると、その精度で毎回問題が修正されますか?
アドバイスをいただければ幸いです。