diff options
-rw-r--r-- | raul/TimeStamp.hpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/raul/TimeStamp.hpp b/raul/TimeStamp.hpp index 9c510f5..ea8b04c 100644 --- a/raul/TimeStamp.hpp +++ b/raul/TimeStamp.hpp @@ -84,12 +84,14 @@ public: {} inline TimeStamp(TimeUnit unit, double dec) - : _ticks(static_cast<uint32_t>(floor(dec))) - , _subticks((dec - floor(dec)) * unit.ppt()) - , _unit(unit) + : _unit(unit) { - assert(dec >= 0); - assert(dec <= std::numeric_limits<uint32_t>::max()); + dec = std::max(0.0, dec); + dec = std::min(double(std::numeric_limits<uint32_t>::max()), dec); + double integral; + const double fractional = modf(dec, &integral); + _ticks = integral; + _subticks = fractional * unit.ppt(); } inline TimeUnit unit() const { return _unit; } |