如何获得数字的n个最后数字?

时间:2011-06-25 03:08:25

标签: c algorithm

我正在将Linux Logger转换为在Windows中工作。 记录器使用snprintf进行打印。 在linux中,这个记录器输出timeofday.tv_usec,给出类似这样的东西:

Jun 24 18:30:31-232928 test-transport...

在我的Windows版本中,使用QueryPerformanceCounter,我生成如下结果:

jun 24 23:54:18-866568508 test-transport....

在Linux中,uSeconds正好有6位数字,但是这个windows函数会生成9位数字。我怎么能只打印最后6位?请记住,这是一个时间关键代码。

2 个答案:

答案 0 :(得分:7)

将数字除以10的余数除以想要保留的位数的幂。

在你的情况下:

num % 1000000

答案 1 :(得分:0)

这实际上取决于866568508代表的数字。这是几纳秒?还是微秒?或者这是以其他数字为单位,例如QueryPerformanceFrequency?我们假设866568508表示866568508赫兹时钟的n个刻度。然后,866568508表示的时间(以秒为单位)为866568508/n。这是866568508*1e6/n微秒。

因此,您使用最后6位数获取微秒的想法不一定正确。既然你说你通常有9位数,那么n可以是1e9(即你有纳秒分辨率)。在这种情况下,您可以通过866568508 866568508 / 1e3`从866568508*1e6/1e9 =获得微秒。

但是,正如我所说,所有这一切都取决于你知道决议是什么。

从某些快速谷歌搜索中,似乎QueryPerformanceFrequency应该为您提供频率。