问题描述
用java怎么表示这个公式,求解的值是多少?求代码
解决方案
结果是0.9402859586706309public 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}}
解决方案二:
“/”在java中是取整的意思,所以说9/14=0,那么log2(0)就是无穷大,所以最后结构是NaN,只需要保留精度计算即可。
解决方案三:
额,JAVA的话好像是这么写的,但是答案是NAN不知道怎么回事。。。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}}
解决方案四:
数学问题,与java无关。
解决方案五:
log 有换底公式 http://baike.baidu.com/view/1920827.htmlog2(3) =log10(3) / log10(2) =ln(3)/ln(2)log2(9/14) = log10(2) /log10(9/14) java 的StrictMath 有 log10(double a) 方法