用java怎么表示这个公式,求解的值是多少?求代码

[img]http://dl2.iteye.com/upload/attachment/0086/3432/a6d4557b-b641-3402-8a25-1440d7776d63.png[/img]

用java怎么表示这个公式,求解的值是多少?求代码

[size=medium][color=blue][b]结果是0.9402859586706309[/b][/color][/size]
[code="java"]
public class Test {
public static void main(String[] args) {
//Math.log(2)表示log e底2
//那么如要求log2底10就是Math.log(10)/Math.log(2)
double x = (-(9.0/14.0))*(Math.log(9.0/14.0)/Math.log(2))
-(5.0/14.0)*(Math.log(5.0/14.0)/Math.log(2));
System.out.println(x);//0.9402859586706309
}
}

[/code]

log 有换底公式 http://baike.baidu.com/view/1920827.htm
log2(3) =log10(3) / log10(2)
=ln(3)/ln(2)

log2(9/14) = log10(2) /log10(9/14)

java 的StrictMath 有 log10(double a) 方法

数学问题,与java无关。

额,JAVA的话好像是这么写的,但是答案是NAN不知道怎么回事。。。
[code="java"]
public class Test {
public static void main(String[] args) {
//Math.log(2)表示log e底2
//那么如要求log2底10就是Math.log(10)/Math.log(2)
double x = (-(9/14))*(Math.log(9/14)/Math.log(2))
-(5/14)*(Math.log(5/14)/Math.log(2));
System.out.println(x);//NaN
}
}
[/code]

“/”在java中是取整的意思,所以说9/14=0,那么log2(0)就是无穷大,所以最后结构是NaN,只需要保留精度计算即可。