1、换底公式
l o g a c = l o g x c l o g x a log_a c = \frac{log_x c}{log_x a} logac=logxalogxc
2、推理过程
有: a b = c ,证明 l o g a c = l o g x c l o g x a 取对数 ( l o g x ) : l o g x a b = l o g x c l o g x a b = b ∗ l o g x a l o g x c = b ∗ l o g x a a b = c ⇒ l o g a c = b l o g x c = l o g a c ∗ l o g x a 得出: l o g a c = l o g x c l o g x a 有:a^b = c,证明 log_a c = \frac{log_x c}{log_x a} \\ 取对数(log_x):log_x a^b = log_x c \\ log_x a^b = b*log_x a \\ log_x c = b * log_x a \\ a^b = c \Rightarrow log_a c = b \\ log_x c = log_a c * log_x a \\ 得出:log_a c = \frac{log_x c}{log_x a} 有:ab=c,证明logac=logxalogxc取对数(logx):logxab=logxclogxab=b∗logxalogxc=b∗logxaab=c⇒logac=blogxc=logac∗logxa得出:logac=logxalogxc
3、应用(其他没有直接计算方式的语言都可以用这种方式)
l o g a c log_a c logac
java 中没办法设置底数 a ,只能设置 c 值,所以没有直接实现上述公式的方式,需要转换成以下方式
l o g 10 c l o g 10 a \frac{log_{10} c}{log_{10} a} log10alog10c
System.out.println(Math.log(100)); // ln 100 4.605170185988092
System.out.println(Math.log1p(100)); // ln (100+1) 4.61512051684126
System.out.println(Math.log10(100)); // lg 100 2.0System.out.println(Math.log10(8)/Math.log10(2)); // log_2 3 3.0