procedure SomeTestCase;var time: TTime; dateTime: TDateTime;begin time := EncodeTime(8,0); date := EncodeDateTime(2012,11,2,8,0); Assert(time = TimeOf(date)); //Failsend;
我发现日期的小时部分评估为7:59:59而不是8:00:00.但是如果我将时间和日期的小时部分设置为9,则断言传递和日期评估为期望值.有些时间有效,有些则没有.有人可以解释一下发生了什么吗?
解决方法 时间值(TTime,TDate,TDateTime)实际上是一个double(即浮点值),日期以整数部分编码,时间由小数部分编码.测试浮点值的相等性总是有风险的.您可以使用SameTime(时间,日期).这正确地补偿了“数字大惊小怪”:结果:= Abs(Frac(A) – Frac(B))< OneMillisecond;
总结以上是内存溢出为你收集整理的delphi – 为什么TTime比较会产生意想不到的结果?全部内容,希望文章能够帮你解决delphi – 为什么TTime比较会产生意想不到的结果?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)