Что именно делает этот метод log10 (int) в Java? - PullRequest
2 голосов
/ 26 апреля 2019

Я проверяю 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 в Интернете и не знаю, что получается.И теперь я хочу проверить это, чтобы извлечь уроки из этого.Любые отзывы будут оценены!Спасибо!

Ответы [ 3 ]

3 голосов
/ 26 апреля 2019

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

Возвращает основание 10 логарифма двойного значения.

Поиск в Google был "java math log10", и я выбрал первую официальную документацию по API, которая стала третьим результатом.

2 голосов
/ 26 апреля 2019

В коде просто отсутствует импорт.

import static java.lang.Math.log10;

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

Выход:

2.0

log10 - это просто логарифм с основанием 10, см. здесь .

1 голос
/ 26 апреля 2019

Чтобы ответить на вопрос в своей шапке, рассмотрите эти примеры.

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

log 10 сообщает, сколько цифр (в базе 10) имеет число (минус 1). Таким образом, все пятизначные числа от 10000 до 99999 имеют лог 10 , который больше или равен 4,0, но меньше 5,0. Если вы возьмете потолок бревна 10 , вы получите 5.

Другими словами, если x - это любое 5-значное число, то int (ceil (log 10 x)) = 5.

...