2007年1月14日
關于java中對數的計算
http://dev.poptool.net/host/363/4468363638.shtml

最近為了計算文檔間的相關性需要用到對數的計算,在網上找到下面的方法:
其中的關鍵是:1 java標準包提供了自然對數的計算方法,2 其他的對數計算可

以轉換為自然對數的計算。

下面是轉貼:但不知道誰是原創作者。
后來搜索到這個連接:
還是人家有專業精神:
下面是他的描述:
?Java supplies a function to calculate natural logs, base e =

2.718281828459045. To calculate logs to other bases, you need to

multiply by a fixed constant: for a log base b multiply by 1/logeb

?

  Sun的J2SE提供了一個計算自然對數方法——double java.lang.Math.log

(double)。請看如下代碼:
  double x = Math.log(5);
  等價于下面的數學方程:
  x = ln 5
  或
  x = loge5
  其中e是內皮爾數或自然數。


  如果你想算底不同的對數又該如何做呢?很遺憾,我們還沒有辦法計算以10

為底或以2為底的對數。
??? 但是它們卻是在計算對數時用的最多的。
??? 要想解決這個問題,我們就要回想曾經在學校里學過的數學和對數方程:
  logx(y) =loge(x) / loge(y)
  這只需一段簡單的Java程序來實現:
  public class Logarithm {
  ???? static public double log(double value, double base) {
???    return Math.log(value) / Math.log(base);
  ???? }
  }
  計算100的以10為底的對數就變為非常簡單了:
  double log = Logarithm.log(100, 10); // log is 2.0
  512的以2為底的對數是:
  double log = Logarithm.log(512, 2); // log is 9.0
  下面的兩個簡單的方法也都是很有用的:
  static public double log2(double value) {
   return log(value, 2.0);
   }
   static public double log10(double value) {
   return log(value, 10.0);
   }