【发布时间】:2016-04-19 07:25:31
【问题描述】:
我还没有足够的声望点离开 cmets,但我看到很多次人们(错误地)建议使用 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。
我想知道为什么。
Way to get number of digits in an int?
Fastest way to get number of digits on a number?
【问题讨论】:
-
你真的有问题吗?
-
我想了解为什么它对于大数是不正确的,并且还想引起人们对这一事实的认识。