我正在尝试创建一个 n 从 16 到 2048 的表以及 log(n)、n*log(n)...
首先,我用 double 对结果进行了 printf 编辑,结果很好,除了表格没有对齐,而是在 n = 256 处搞乱了。我认为结果对于 double 数据来说可能太大了类型所以我切换到长。
public class FunctionGrowth {
public static void main(String[] args) {
long n = 16L;
System.out.println("log(n) \tn \t\tn*log(n)\t\tn^2 \tn^3 \t\t2^n");
while(n <= 2048) {
long l = (long) Math.log(n);
long nl = (long) (n*Math.log(n));
long pow = (long) Math.pow(n,2);
long cube = (long) Math.pow(n,3);
long pow2 =(long) Math.pow(2,n);
System.out.printf("%.2d\t%.0d\t\t%.2d\t\t\t%d\t%d\t\t%d\n", l, n, nl, pow, cube, pow2);
n = n*2;
}
}
}
但现在我有一个新问题: Exception in thread "main" java.util.IllegalFormatPrecisionException: 2
我尝试了很多方法将 log(n), pow(n,2)... 从 Math 类转换为 long,但到目前为止没有任何效果。
你能帮我解决这个问题吗?我很挣扎。
繁花不似锦
暮色呼如
慕桂英4014372
呼唤远方
相关分类