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:
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!
3 Réponses :
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.
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 .
Pour répondre à la question dans votre en-tête, veuillez prendre en compte ces exemples.
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.
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éeVous avez fait une faute de frappe:
wip = 10;
doit êtrewip / = 10;
comme dans votre image.