gpt4 book ai didi

delphi - 为什么Delphi使用double而不是Int64来存储日期和时间?

转载 作者:行者123 更新时间:2023-12-03 14:39:36 25 4
gpt4 key购买 nike

为什么Delphi使用double(8字节)来存储日期和时间而不是Int64(也是8字节)?由于 double 浮点不是精确值,我很好奇存储在 Int64 值中的 unix 日期和时间的精度是否会比 Delphi 日期和时间的精度更好?

最佳答案

简单的解释是 Delphi TDateTime 类型直接映射到 OLE/COM 日期/时间格式。

Embarcadero 选择使用现有的日期/时间表示形式,而不是创建另一个日期/时间表示形式,并选择了当时最明显的平台 native 选项。

一些有关 Windows 日期/时间表示的有用文章:

就精度而言,您希望将 Unix 时间与 TDateTime 进行比较。 Unix 时间对于 32 位或 64 位值都具有秒精度。对于接近纪元的值, double 具有更高的精度。例如,一天有 86,400 秒,并且在 0 和 1 之间还有多个数量级的 double 值。在 Unix 时间的精度超过 TDateTime 之前,您需要转到 188,143,673 年左右。

尽管您关注的是类型的大小,但表示形式当然至关重要。例如,如果不是将日期表示为纪元后的秒数,而是表示为纪元后的毫秒,那么 Unix 时间的精度将提高 1000 倍。当然范围也会缩小1000倍。

您需要谨慎地单独考虑这些类型的精度。这些类型并不是孤立存在的,值的来源很重要。如果时间来自文件系统,那么这实际上将决定该值的精度。

关于delphi - 为什么Delphi使用double而不是Int64来存储日期和时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48285768/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com