6

我有一个变体类型的TDateTime值(我从 得到的结果)。EndOfTheMonth(date)结果被错误地四舍五入。让我们看一个例子:

  data := EndOfTheMonth(date);
  V := data;
  ShowMessage(DateTimeToStr(data) + ' vs ' + VarToStr(V));
 // output is
 // data = 2012-01-31 23:59:59
 // v    = 2012-02-01            // why next day?

它是设计的行为吗?如何解决这个问题?

4

1 回答 1

6
ShowMessage(DateTimeToStr(data) + ' vs ' + DateTimeToStr(VarToDateTime(V)));

更新:我猜问题是这个月的最后一毫秒非常接近第二天的0:00:00,也就是说,这个TDateTime值(基本上是a double)非常接近一个整数(例如41029.9999999884非常接近to 41029) 所以VarToStr函数假定小数是数字模糊。

于 2012-04-05T11:39:38.073 回答