如何在Java中计算对数?

6

我正在尝试编写一个Java程序,它可以将值放入涉及log 1/3的公式中。

在Java中如何计算log 1/3?


你需要自然对数吗?那么,你应该看一下Math::log - Dmitry Ginzburg
5个回答

9

当你想计算对数时,需要知道底数。一旦你知道了底数,就可以进行计算:

log_b(x) = ln(x) / ln(b)

在Java中,Math#log(double)函数用于计算自然对数。因此,您可以使用该函数来计算给定底数b的对数:

http://en.wikipedia.org/wiki/Logarithm#Change_of_base

double result = Math.log(x) / Math.log(b);

为什么计算器的结果和程序的结果不同? - Muhammad Haryadi Futra
你需要知道要使用哪个对数。如果是以10为底的对数,则需要将b设为10。你的计算器可能使用以e为底的对数,这就是自然对数。http://en.wikipedia.org/wiki/Natural_logarithm - Stefan Dollase

7
您可以使用Math.log(value)来获取特定值的对数,其中该值被认为是double类型。您还可以使用Math.log10(value)来获取以10为底的对数。
因此,您只需使用以上两个方法即可。
Math.log(1/3.0)

1
楼主说得没错。他在问如何计算 log(1/3)。你试过 Math.log(1/3) 吗? - Ruchira Gayan Ranaweera

3

当1/3进行整数类型计算时,结果将会是0而不是0.3333。

因此,Math.log(1/3) = Math.log(0),导致结果为无穷大。

所以,你需要写成Math.log(1/3.0)才能得到预期的结果。


1

我使用了它,但是当我计算这个式子:Math.log(5/2.0)时,结果是0.9162907318741551,但是当我用我的计算器计算时,结果是0.3979xxxx,为什么会不同呢? - Muhammad Haryadi Futra
你在计算器上使用的是ln还是log按钮? - MrTux
@MuhammadHaryadiFutra 只需在谷歌中键入ln 2.5和log 2.5即可看到这两个数字。 - Michał Urbaniak

0

你不需要新的实现,因为这里有内置功能可用

阅读关于 Math.log() 的内容

但是在这种情况下,log(1/3) 将会给你一个 无穷大 的值,如果你使用 Math.log(1/3)

你可以按照以下方式使用 log 规则。

log(1/3) =log(1)-log(3)

现在

Math.log(1/3)=Math.log(1)-Math.log(3)

例如:

System.out.println(Math.log(1)-Math.log(3));

输出:

-1.0986122886681098

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接