关于MinutesBetween函数的困惑
intMin=MinutesBetween(TimeBegin,TimeEnd);
在上述语句中,当开始时间和结束时间相差小于23分钟时得到的分钟数比实际间隔小1,另外在其他一些条件下时间间隔也比实际间隔小1
例如:
TimeBegin=12:00
TimeEnd=12:01
则intMin=0
TimeBegin=12:00
TimeEnd=12:20
则intMin=19
TimeBegin=12:00
TimeEnd=12:30
则intMin=30
TimeBegin=08:02:
TimeEnd=09:05
则intMin=62
请问哪位知道原因?
问题点数:100、回复次数:3Top
1 楼nuaacims(沉底鱼)回复于 2003-09-02 22:11:12 得分 0
楼主,能讲清除你这个MinutesBetween函数是什么地方的嘛?
Win api???还是自己写的??
如果是自己写的 那么这个函数肯定内部逻辑写错了 如果是sdk里面的 我的确不知道为什么
Top
2 楼jishiping(JSP 季世平)回复于 2003-09-02 22:40:06 得分 100
跟踪调试了一下源程序,发现是Trunc这个函数的问题(看来是BCB6的一个BUG)。你用函数
MinuteSpan 这个函数就可以了。不过 MinuteSpan 返回的是 double,如果将返回值传给整
数,最好在后面加上一个很小的数字(因为浮点数有误差,不加的话可能有问题)。比如:
int nMin = MinutesBetween(TimeBegin,TimeEnd) + 0.000001;Top
3 楼jishiping(JSP 季世平)回复于 2003-09-02 22:41:58 得分 0
不加上一个很小的数字,只是可能有问题,不是一定有问题。只是安全起见,还是加上一个
小的数字比较保险一些。Top




