我想计算朴素贝叶斯概率。计算如下:
Math.Log((n1+1)/(n2+n3))/Math.Log(2)
结果应该是double,其中n1..n3很长。我该如何施展它?
我目前的演员阵容
Math.Log((double)(n1+1)/(n2+n3))/Math.Log(2)
答案 0 :(得分:3)
您当前的演员阵容将正常运作。如果除法的任何一个操作数是双精度数,那么另一个操作数也会变为双精度数。
请参阅Java Language Specification on Binary Numeric Promotion:
应用扩展基元转换来转换由以下规则指定的一个或两个操作数:
如果任一操作数的类型为double,则另一个操作数转换为double。
否则,如果任一操作数的类型为float,则另一个操作数转换为float。
否则,如果任一操作数的类型为long,则另一个操作数转换为long。
否则,两个操作数都将转换为int类型。