我正在开发一个需要计算数字立方的程序。长话短说,我需要将数字与字符串进行比较,因此当我转换为字符串时,我需要去掉 double 给出的小数位。为此,我使用 Math.round
并将其保存为 long
。这对于相对正常的数字来说效果很好,但数字可以达到 999,999。
我使用了 275393(一个给定的测试数字,所以我假设它对于我正在处理的问题来说一定是正确的),计算器和计算机似乎都没有得到正确的答案。正确答案应该在结果中的某处包含 123457,但计算器有 12346(我认为这只是四舍五入,因为它在此之后停止列出数字),而计算机有 123456(计算机在这一点之后停止列出数字)。四舍五入是否会带来问题(不应该,因为我很确定它只会四舍五入到十分位,但谁知道)?还是别的什么?
最佳答案
Math.pow()
接受两个 double
并返回一个 double
。 double
的精度不足以表示 2753933 = 20886164356123457(精确)。
解决方案是使用 BigInteger.pow()
.
关于Java Math.pow 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8491881/