发布于 2018-12-06 16:37:09
在chrono::duration
中,精度的选择是在精度和范围之间的权衡,对性能没有影响。
由时钟提供的时钟每个都具有嵌套的duration
类型所记录的“本机精度”,这就是它的特性(客户端不能更改)。如果您想要的time_point
或duration
与此不同(在调用now()
之后),则成本是一个乘法或除法,以获得所需的精度。一旦你有了你想要的精度,就不用再花那么多钱了。
精度越高,一般范围就越小。没有超流保护,除非您正在使用自定义Rep
,它提供这样的检查。您可以使用静态duration::min()/max()
成员函数检查您的范围。
在将具有非常大但在范围内的值的进程持续时间转换为更精细的精度时,可能会出现运行时错误源,从而导致溢出的精度更高。例如,如果您拥有超过292年的microseconds
,并将其转换为nanoseconds
,则会出现溢出。
https://stackoverflow.com/questions/53654812
复制相似问题