Java中的这个log10(int)方法究竟是什么?

问题描述 投票:2回答:3

我正在从在线测试中检查Java代码,我试着了解这个log10()方法到底是什么。

这是一张带有测试代码的图片:

enter image description here enter image description here

我在Eclipse中添加了代码,但是我遇到了一些错误:

public class Demo {

    public static String numbers(int from, int to) {

        int maxDigits = ceil(log10(to));
        int len = (to - from + 1) * (maxDigits + 1);
        char[] chars = new char[len];
        len = 0;

        for (int index = from; index < to; index++) {
            char[] reversed = new char[maxDigits];
            int wip = index;
            int digit = 0;

            while (wip > 0) {
                reversed[digit++] = (char) ('0' + wip % 10);
                wip = 10;
            }

            while (digit-- > 0) {
                chars[len++] = reversed[digit];
            }
            chars[len++] = ' ';
        }
        return new String(chars, len);
    }

    public static void main(String[] args) {
        Demo.numbers(11, 15);
    }
}

有人可以帮我理解这个ceil(log10(to))声明是什么吗?因为我在这一行得到了编译错误:“方法log10(int)未定义类型Demo”。无论如何,我认为这段代码有一些错误,因为我最后还有另一个编译错误“构造函数String(char [],int)未定义”。

我已经在线进行了Java测试,我不知道输出是什么。现在我想检查它以从中学习。任何反馈将是apreciated!谢谢!

java arrays string logarithm
3个回答
3
投票

https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#log10(double)

返回double值的基数10对数。

谷歌搜索是“java math log10”,然后我选择了第一个官方API文档,这是第三个结果。


2
投票

代码只是缺少导入。

import static java.lang.Math.log10;

public class MyClass {
    public static void main(String[] args) {
        System.out.println(log10(100));
    }
}

输出:

2.0

log10只是对数10的对数,请参阅here


1
投票

要回答标题中的问题,请考虑以下示例。

  • log10 11 = 1.04139269
  • log10 101 = 2.00432137
  • log10 1001 = 3.00043408
  • log10 10001 = 4.00004343
  • log10 99999 = 4.99999566

log10告诉你这个数字有多少位数(以10为单位)(减去1)。因此,从10000到99999的所有五位数字都具有大于或等于4.0但小于5.0的log10。如果你拿log10的ceil,你将获得5。

换句话说,如果x是任何5位数字,则int(ceil(log10 x))= 5。

© www.soinside.com 2019 - 2024. All rights reserved.