Jus*_*tMe 6 delphi datetime rounding variant delphi-xe2
我有一个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?
Run Code Online (Sandbox Code Playgroud)
它是设计行为吗?如何解决这个问题?
ShowMessage(DateTimeToStr(data) + ' vs ' + DateTimeToStr(VarToDateTime(V)));
Run Code Online (Sandbox Code Playgroud)
更新:我猜测问题是该月的最后一毫秒非常接近第二天的0:00:00,也就是说,该TDateTime值(基本上是一个double)非常接近一个整数(例如41029.9999999884非常接近) to 41029)所以VarToStr函数假设小数是数字模糊.