2012-05-27 34 views
0

我有一堆日期,我想找到它們的平均值。數值穩定的java.util.Days的平均值

  • 在我遇到溢出問題之前,現在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

分母應該可以是(System.currentTimeMillis()+(100 * 365.25 * 24 * 60 * 60 * 1000)),因爲他想要在一百年內的日期。這大約出現在2052416 - 少於三分之一,但仍然不少。 –

+0

@TomAnderson是的,我們現在已經42年了,OP需要長達142年。我考慮到了這一點,但只要我看到商的重要性,我就不會爲此而煩惱。 –