首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么difftime()返回双倍?

为什么difftime()返回双倍?
EN

Stack Overflow用户
提问于 2015-12-24 21:10:50
回答 2查看 2.2K关注 0票数 10

来自difftime()手册页

double difftime(time_t time1, time_t time0); difftime()函数返回时间time1和时间time0 (表示为double )之间的秒数。

既然‘秒数’不需要浮点数,为什么这个函数会返回一个double

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-24 21:19:34

这个文档在这一点上更加清楚:

在POSIX系统中,time_t是以秒为单位测量的,而扩散时间相当于算术减法,但是C和C++允许time_t的分数单位。

虽然为整数类型,对于非POSIX系统,这是可能的,这可以返回小数秒.

票数 4
EN

Stack Overflow用户

发布于 2015-12-24 21:28:24

C允许各种标量数字(整数、浮点)表示时间。它需要是“.能够代表时间的真实类型”,C11第7.27.3节,

clock_t and time_t中可表示的时间的范围和精度是实现定义的。C11dr§7.27.1 4

两个time_t值之间的差异,作为一个double,提供了不同的范围和精度。

OP,“既然‘秒数’不需要浮点数,为什么这个函数会返回双倍?

编辑Linux/posix可能不会使用秒数,但其他系统已经这样做了。定义difftime()的C标准选择double,它可以容纳秒的整数积累以及其他OS实现。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34457931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档