2014-03-02 129 views
-2

我想計算樸素貝葉斯概率。計算公式如下:我需要多少個雙倍投數

Math.Log((n1+1)/(n2+n3))/Math.Log(2) 

結果應該是雙倍的,其中n1..n3很長。我該如何施展它?

我當前施法這樣

Math.Log((double)(n1+1)/(n2+n3))/Math.Log(2) 
+2

不要你的意思'Math.log' –

+2

你現在的施法某些原因而無法工作...? – Radiodef

+0

它的工作,但只是確保它適用於所有條件,需要一些建議 –

回答

3

你當前施法將正常工作。如果這個師的任何一個操作數是雙重的,那麼另一個也會被加倍。

Java Language Specification on Binary Numeric Promotion

加寬原語轉換應用於轉換的任一個或所指定由以下規則兩個操作數:

  • 如果操作數的類型是雙,另一種是轉化爲雙倍。

  • 否則,如果任一操作數的類型爲float,則另一個操作數轉換爲float。

  • 否則,如果任一操作數的類型爲long,則另一個操作數轉換爲long。

  • 否則,兩個操作數都轉換爲int類型。

+0

不錯的解釋,謝謝 –