У меня недостаточно очков репутации, чтобы оставлять комментарии, но видел много раз, когда люди (неверно) предлагали использовать log10 для вычисления числа цифр в положительном целых числах. Это неверно для больших чисел!
long n = 99999999999999999L;
// correct answer: 17
int numberOfDigits = String.valueOf(n).length();
// incorrect answer: 18
int wrongNumberOfDigits = (int) (Math.log10(n) + 1);
// also incorrect:
double wrongNumberOfDigits2 = Math.floor(Math.log10(n) + 1);
Логарифмические решения будут неправильно выводить 18 вместо 17.
Я хотел бы понять, почему.
Способ получения числа цифр в int?
Самый быстрый способ получить число цифр на номере?