I have a very large nanosecond value (representing nanoseconds since epoch) which I try to break down into seconds since epoch and nanoseconds like this:
uint64_t nanosecondsEpoch;
unsigned secs = nanosecondsEpoch / 1000000000ULL;
unsigned nanos = nanosecondsEpoch - (secs * 1000000000ULL);
the problem is if I try to stitch it back together like this:
uint64_t stichBack = secs * 1000000000ULL + nanos
私は道から外れている何かを手に入れます。その理由は、除算を実行すると、秒で 1357314854.03 が得られ、0.03 がドロップされるためだと思います (大きな不一致の原因となります)..しかし、両方の情報を保存できるはずなので混乱していますフロートに頼らずに、署名されていない情報を回復しますか? 私がキャッチできないように見える算数で何かばかげたことをしていますか?
以下に具体例を示します。
今日の午前中のエポック時刻からのナノ秒の値: 1357314854032484000
署名なしの秒とナノ秒の両方で使用できる場合は uint64_t を使用しますが、上記の値を上記のように分割して元に戻すことができない理由が不思議です。