1
votes

Que signifie exactement cette méthode log10 (int) en Java?

Je vérifie un code Java à partir d'un test en ligne et j'essaie de comprendre ce qu'est exactement cette méthode log10 () .

Voici une image avec le code du test:

 entrez la description de l'image ici entrez la description de l'image ici

J'ai ajouté le code dans mon Eclipse et j'obtiens des erreurs:

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);
    }
}

Quelqu'un peut-il aider moi pour comprendre ce que signifie cette instruction ceil (log10 (to)) ? Parce que j'obtiens une erreur de compilation à cette ligne: "La méthode log10 (int) n'est pas définie pour le type Demo". Quoi qu'il en soit, je pense que ce code a une erreur car j'ai également une autre erreur de compilation à la fin "Le constructeur String (char [], int) est indéfini".

J'ai fait un test Java en ligne et je n'ai aucune idée du résultat. Et maintenant, je veux le vérifier pour en tirer des leçons. Tout commentaire sera apprécié! Merci!


6 commentaires

Ce sont des appels de méthode qui ne sont pas définis dans votre extrait de code, nous ne pouvons donc pas répondre à votre question.


Peut-être que Math.log10 (int) ?


log10 est souvent utilisé pour obtenir le nombre de chiffres d'un nombre (décimal bien sûr)


@ MuratKaragöz Je suis entièrement d'accord avec vous. Cela dit, si cette méthode ne calcule pas le logarithme base 10 de int , je serais vraiment déçu de la lisibilité du code.


De plus, la dernière instruction devrait probablement être new String (chars, 0, len); pour qu'elle soit compilée


Vous avez fait une faute de frappe: wip = 10; doit être wip / = 10; comme dans votre image.


3 Réponses :


3
votes

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

Renvoie le logarithme en base 10 d'une valeur double.

La recherche Google était "java math log10" et j'ai ensuite choisi la première documentation officielle de l'API, qui était le troisième résultat.


0 commentaires

1
votes

Il manque simplement des importations dans le code.

2.0

Résultat:

import static java.lang.Math.log10;

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

log10 est juste le logarithme avec la base 10, voir ici .


0 commentaires

0
votes

Pour répondre à la question dans votre en-tête, veuillez prendre en compte ces exemples.

  • journal 10 11 = 1.04139269
  • journal 10 101 = 2.00432137
  • journal 10 1001 = 3.00043408
  • journal 10 10001 = 4,00004343
  • journal 10 99999 = 4.99999566

log 10 vous indique le nombre de chiffres (en base 10) du nombre (moins 1). Ainsi, tous les nombres à cinq chiffres, de 10000 à 99999, ont un journal 10 qui est supérieur ou égal à 4,0 mais inférieur à 5,0. Si vous prenez le plafond du journal 10 , vous obtiendrez 5.

En d'autres termes, si x est un nombre à 5 chiffres, alors int (ceil (log 10 x)) = 5.


0 commentaires