c++ - std::chrono calculate the difference in different ratio -


my title may not helpful, have std::chrono::nanosecond, asked serialise , provide second, , nanosecond different values in json.

so although struct holds:

struct time {      ...      std::chrono::nanoseconds timepoint; }; 

when asked seconds, do

uint32_t sec() const {      return std::chrono::duration_cast<std::chrono::seconds>(timepoint_).count(); } 

yet when asked nanoseconds, want resolution in nanoseconds, without seconds (only least significant values?) however, casting in nanoseconds returns both seconds , higher resolution.

uint64_t nanosec() const {     return std::chrono::duration_cast<std::chrono::nanoseconds>(timepoint_).count(); } 

how can calculate actual increased resolution (e.g., nanoseconds without actual seconds)?

you can retrieve seconds using std::duration_cast std::seconds , nanoseconds using modulo operator:

template <typename t> std::pair<t, t> split (std::chrono::duration<t, std::nano> const& duration) {     using seconds = std::chrono::duration<t>;     return {std::chrono::duration_cast<seconds>(duration).count(),             (duration % seconds{1}).count()}; } 

there example on this page showing use of arithmetic operators on std::chrono::duration achieve want.


Comments

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -