私は理解できないような小さな問題を抱えています。2つのカレンダーからミリ秒単位で時間を取得し、それらを減算し、結果を除算して2つのカレンダーの日数の差を取得しています。繰り返し実行すると、この計算は小さな小数、通常は.0000001だけずれることがあります。これを改善する方法はありますか?注:これらの数値はしばらくすると大きくなるため、長い値として保持する必要があります。
コードは次のとおりです。
まず、カレンダーの日付の値をミリ秒単位で取得します...
final long calendarOne = datePickerCalendar
.getTimeInMillis();
final long calendarTwo = actualCalendar
.getTimeInMillis();
次に、2つの数値を減算します...
if(calendarOne > calendarTwo)
{
long differenceInMilliseconds = (long)
(calendarOne) - (calendarTwo);
}
DifferenceInMillisecondsの値は、2つのカレンダー間で変更がなく、次のように変化します。
正しい番号:63417600000
間違った番号:63417599999
間違った番号:63417599997
数学はほとんどの場合正しい数を考え出しますが、なぜ矛盾があるのか理解できません。私は数学で何か間違ったことをしていますか?または、ロングを丸める方法はありますか?
助けてくれてありがとう