我需要多长时间的双重演员

时间:2014-03-02 00:09:45

标签: java casting

我想计算朴素贝叶斯概率。计算如下:

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

结果应该是double,其中n1..n3很长。我该如何施展它?

我目前的演员阵容

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

1 个答案:

答案 0 :(得分:3)

您当前的演员阵容将正常运作。如果除法的任何一个操作数是双精度数,那么另一个操作数也会变为双精度数。

请参阅Java Language Specification on Binary Numeric Promotion

  

应用扩展基元转换来转换由以下规则指定的一个或两个操作数:

     
      
  • 如果任一操作数的类型为double,则另一个操作数转换为double。

  •   
  • 否则,如果任一操作数的类型为float,则另一个操作数转换为float。

  •   
  • 否则,如果任一操作数的类型为long,则另一个操作数转换为long。

  •   
  • 否则,两个操作数都将转换为int类型。

  •