以下是我为在 Java 中查找 n^n 的前 k 位而编写的代码
private static int firstK(int n,int k)
{
double x, y;
x = n * Math.log10(n);
y = Math.floor(Math.pow(10, x - Math.floor(x) + k - 1));
return((int)y);
}
但是,当我输入 n=99999999 和 k=9 时,Java 中的结果是 367879457,但原始答案应该是 367879443。为什么它显示错误的结果?它与 Java 中 double 的精度有关吗?使用 BigDecimal 给出相同的结果。对代码有什么建议吗?顺便说一句,n<=10^9 和 k<=9。