double difftime(time_t time1, time_t time0);
difftime()
関数はdouble
として表さ 時間time1
と時間time0
との間に経過した秒数を返します。
'秒数'は浮動小数点数を必要としないので、なぜこの関数はdouble
を返しますか?
double difftime(time_t time1, time_t time0);
difftime()
関数はdouble
として表さ 時間time1
と時間time0
との間に経過した秒数を返します。
'秒数'は浮動小数点数を必要としないので、なぜこの関数はdouble
を返しますか?
このdocumentation点の詳細は明らかである:POSIXシステムで
、のtime_tは秒単位で測定し、difftimeは、算術減算と等価であるが、CおよびC++のtime_tのための小数部を許可されています。
POSIX requires time_t
to be an integer typeただし、POSIX以外のシステムでは、小数点以下の秒数が返される可能性があります。
標準では、time_tには次のようなことが書かれています: '算術(C11まで)実数(C11以降)の型を表現できる型'。 – Zaxter
@ user3490458:はい、しかし、POSIXは特に 'time_t'を整数型にする必要があります。 http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_types.h.html –
@KeithThompsonはい、それは確かにポイントでした。 –
Cでは、時間を表すためにさまざまなスカラー数(整数、浮動小数点数)が使用できます。それはする必要がある「...時間を表すことができる本当の種類」C11§7.27.13、
範囲と
clock_t and time_t
で表現倍の精度が 実装定義です。double
が得られるようにC11dr§7.27.14
2つのtime_t
値の差は、広い範囲及び精度を変化させます。
OP、「 '秒数' は浮動小数点数を必要としないので、なぜこの関数はdoubleを返すのですか?
[編集]のLinux/POSIXは、使用しない場合があります秒のフラクションが、他のシステムがそうdouble
を選択し、その秒の整数蓄積ならびに他のOSの実装を収容difftime()
定義C規格を行っている関連
:http://stackoverflow.com/q/13855890/827263 –