为什么Delphi使用double(8字节)来存储日期和时间而不是Int64(8字节)?由于双精度浮点不是精确值,我很好奇unix日期的精度和存储在Int64值中的时间将优于Delphi日期和时间的精度?
Dav*_*nan 23
简单的解释是Delphi TDateTime
类型直接映射到OLE/COM日期/时间格式.
Embarcadero选择使用现有的日期/时间表示,而不是创建另一个,并选择当时最明显的平台本机选项.
有关Windows日期/时间表示的一些有用的文章:
就精度而言,您希望将Unix时间与之比较TDateTime
.Unix时间对于32位或64位值都具有第二精度.对于接近历元的值,双精度具有更高的精度.一天有86,400秒,例如,在0和1之间有多个数量级的双倍值.在Unix时间的精度超过之前,你需要到188,143,673左右TDateTime
.
虽然您专注于类型的大小,但表示当然非常重要.例如,如果不是将日期表示为纪元后的秒数,而是表示为纪元后的毫秒数,则Unix时间的精度将高出1000倍.当然,范围也将减少1000倍.
您需要谨慎考虑孤立地考虑这些类型的精度.这些类型不是孤立存在的,值的来源很重要.如果时间来自文件系统,那么这实际上将决定值的精确度.
归档时间: |
|
查看次数: |
512 次 |
最近记录: |