为什么与减去 1970-01-01 相比,timestamp() 会多显示一微秒?

mar*_*lli 1 python floating-point datetime timestamp

以下内容相差 1 微秒:

In [37]: datetime(2514, 5, 30, 1, 53, 4, 986754, tzinfo=dt.timezone.utc) - datetime(1970,1,1, tzinfo=dt.timezone.utc)
Out[37]: datetime.timedelta(days=198841, seconds=6784, microseconds=986754)

In [38]: datetime(2514, 5, 30, 1, 53, 4, 986754, tzinfo=dt.timezone.utc).timestamp()
Out[38]: 17179869184.986755
Run Code Online (Sandbox Code Playgroud)

986754第一种情况和986755第二种情况中的微秒数。

这只是Python浮点算术错误,还是我还遗漏了其他东西?

khe*_*ood 6

它是浮点近似值。如果你只是输入

17179869184.986754
Run Code Online (Sandbox Code Playgroud)

进入Python,你会得到

17179869184.986755
Run Code Online (Sandbox Code Playgroud)

前者无法用 Python 的 float 类型可用的精度来表达。