【发布时间】:2023-01-20 06:56:32
【问题描述】:
我正在尝试计算轮班结束时间到第二天的总工作时间。
tHours 不对。预期结果应为 12,但实际结果为 11。
sShift = 08:00 PM(开始班次)
eShift = 08:00 AM(下班)-> 第二天
Time1 = CDate(sShift.Text)
Time2 = CDate(eShift.Text)
If (Time2 <= Time1) Then
Total_Seconds = (Time2 + 1 - Time1) * 24 * 3600
Else
Total_Seconds = (Time2 - Time1) * 24 * 3600
End If
tMins = Int((Total_Seconds Mod 3600) / 60)
tHours = Int(Total_Seconds / 3600)
Total_Seconds 43200 除以 3600 应该得到 12。但是 tHours 显示的是 11。
【问题讨论】:
-
我的猜测是这是一个浮点错误。
total_seconds = 43200和tHours = Int(total_seconds / 3600)返回 12 -
浮点数错误。正确声明你的变量和数据类型,你应该没问题(例如时间=>
Date;小时/分钟/秒为Long) -
@Ron Rosenfeld:我认为这不会解决浮点问题。在这种情况下,我的建议是在计算后将 total_seconds 转换为 long 值