2

我有一个小问题,我似乎无法弄清楚。我从两个压延机中获取以毫秒为单位的时间,减去它们,然后将结果除以得到两个压延机的天数之差。当重复进行时,有时这个数学会偏离小数点,通常是 0.0000001。有没有办法解决这个问题?注意:我需要将这些数字保留为长值,因为它们会在一段时间后变得很大。

继承人的代码:

首先,我以毫秒为单位获得日历日期的值......

    final long calendarOne = datePickerCalendar
             .getTimeInMillis();

    final long calendarTwo = actualCalendar
             .getTimeInMillis();

然后我减去这两个数字...

    if(calendarOne > calendarTwo)
    {

         long differenceInMilliseconds = (long)
             (calendarOne) - (calendarTwo);

    }

在两个日历之间没有变化的情况下,diffInMilliseconds 的值将如下变化。

正确号码:63417600000

号码错误:63417599999

号码错误:63417599997

大多数情况下,数学得出的数字是正确的,但我不知道为什么会有差异。我在数学上做错了吗?或者有没有办法四舍五入?

谢谢你的帮助

4

2 回答 2

3

大多数情况下,数学得出的数字是正确的,但我不知道为什么会有差异。我在数学上做错了吗?或者有没有办法四舍五入?

没有也没有。当您从另一个整数中减去一个整数时,没有四舍五入。

可能的原因在于创建两个日历对象的方式。我怀疑他们是从系统时钟中获取初始值的,并且在某些情况下,各个创建时间之间的经过时间足够长,以至于在毫秒级的时间值中很明显。

于 2013-01-26T04:30:44.633 回答
1

在你创建后actualCalendar,做actualCalendar.set( MILLISECOND, 0 ),也做同样的事情,datePickerCalendar你将确保两者之间的任何差异至少是一秒钟。应该解决您的问题,因为它可能是由于创建两个日历之间的延迟。

于 2013-01-26T05:05:14.873 回答