我正在从在线测试中检查Java代码,我试着了解这个log10()
方法到底是什么。
这是一张带有测试代码的图片:
我在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测试,我不知道输出是什么。现在我想检查它以从中学习。任何反馈将是apreciated!谢谢!
https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#log10(double)
返回double值的基数10对数。
谷歌搜索是“java math log10”,然后我选择了第一个官方API文档,这是第三个结果。
代码只是缺少导入。
import static java.lang.Math.log10;
public class MyClass {
public static void main(String[] args) {
System.out.println(log10(100));
}
}
输出:
2.0
log10只是对数10的对数,请参阅here。
要回答标题中的问题,请考虑以下示例。
log10告诉你这个数字有多少位数(以10为单位)(减去1)。因此,从10000到99999的所有五位数字都具有大于或等于4.0但小于5.0的log10。如果你拿log10的ceil,你将获得5。
换句话说,如果x是任何5位数字,则int(ceil(log10 x))= 5。