c-为什么difftime()返回一个double



来自difftime()的手册页:

double difftime(time_t time1, time_t time0);

difftime()函数返回时间time1和时间time0,表示为double

既然"number of seconds"不需要浮点数,为什么此函数会返回double

本文档更清楚地说明了这一点:

在POSIX系统上,时间_t是以秒为单位测量的,difftime相当于算术减法,但C和C++允许时间_t使用分数单位。

尽管POSIX要求time_t是整数类型,但对于非POSIX系统,这可能会返回小数秒。

C允许使用各种标量(整数、浮点)来表示时间。它需要是"…能够表示时间的实数类型"C11§7.27.13,

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

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

OP,"既然‘秒数’不需要浮点数,为什么这个函数会返回一个双精度


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

相关内容

最新更新