我有一个小问题,我似乎无法弄清楚。我从两个压缩器中获取时间,以毫秒为单位,减去它们,并将结果除以得到两天中的两个压延器的差值。如果重复完成,有时候这个数学将被一个小的小数点,通常是.0000001。有办法解决这个问题吗?注意:我需要将这些数字保留为较长的值,因为它们会在一段时间后变得很大。
下面是代码:
首先我得到了压缩日期的值,以毫秒为单位......
final long calendarOne = datePickerCalendar
.getTimeInMillis();
final long calendarTwo = actualCalendar
.getTimeInMillis();
然后我减去这两个数字......
if(calendarOne > calendarTwo)
{
long differenceInMilliseconds = (long)
(calendarOne) - (calendarTwo);
}
differenceInMilliseconds的值将如下变化,两个日历之间没有任何变化。
正确号码:63417600000
错误号码:63417599999
错误号码:63417599997
大部分时间数学都会出现正确的数字,但我无法弄清楚为什么会出现差异。我在数学方面做错了吗?或者有没有办法绕过多头?
感谢您的帮助
答案 0 :(得分:3)
大部分时间数学都会出现正确的数字,但我无法弄清楚为什么会出现差异。我在数学方面做错了吗?或者有没有办法绕过多头?
不,不。从另一个整数中减去一个整数时没有舍入。
可能的原因在于创建两个日历对象的方式。我怀疑他们是从系统时钟获取初始值,并且在某些情况下,在相应的创建时间之间有足够长的时间在毫秒级时间值中显着。
答案 1 :(得分:1)
创建actualCalendar
后,执行actualCalendar.set( MILLISECOND, 0 )
,同样在datePickerCalendar
上执行相同操作,您将确保两者之间的差异至少为一秒。应该解决您的问题,因为这可能是由于创建两个日历之间的延迟。