2012-05-27 2 views
0

나는 여러 개의 날짜가 있으며 평균을 찾고 싶다.java.util.Dates의 수치 적으로 안정적인 평균

  • 오버플로 문제가 발생하기 전에 100 년 이내에 몇 개의 날짜를 합산 할 수 있습니까? 어떤 문제가 있니?
  • 오버플로 문제를 피하면서 평균을 계산하는 가장 좋은 방법은 무엇입니까?
+3

어떤 유형의 프리미티브로 날짜를 합산 하시겠습니까? 당신은 1970 년 1 월 1 일부터 그것들을 ms로 저장하고 있습니까? – Hidde

+1

이것은 간단한 대수입니다. 예를 들어 합계를 계산하는 경우 64 비트 유형이면 최대 2^63-1까지의 값을 보유 할 수 있습니다. 관심있는 최대 가치로 나누십시오. 그러면 합계 할 수있는 금액이 표시됩니다. –

답변

1
System.out.println(Long.MAX_VALUE/System.currentTimeMillis()); 

출력 :

6892653 

나는이 질문에 모두 대답을 생각합니다. 또한 각 에포크 값을 1000 * 60 * 60 * 24로 나눌 수 있습니다. 그러나 해당 원시 지수의 크기가 주어지면 과장 될 수도 있습니다.

+0

분모는 100 년 이내에 날짜를 원한다는 가정하에 (System.currentTimeMillis() + (100 * 365.25 * 24 * 60 * 60 * 1000))이어야합니다. 약 2052416이 나오는데 이는 3 분의 1도 안되지만 여전히 상당합니다. –

+0

@TomAnderson 예, 우리는 현재 42 년이되었으며, OP는 최대 142 세가 필요합니다. 나는 그것을 염두에 두었습니다.하지만 그 몫의 크기를 보자 마자 나는 그것에 대해 걱정하지 않았습니다. –