【发布时间】:2013-10-18 00:31:07
【问题描述】:
以下是我编写的用于在 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
【问题讨论】:
-
您可以使用 BigInteger 来代替。顺便说一下,示例输出似乎应该是 999999980 而不是 367879443。
标签: java algorithm exponent largenumber