Java Math.pow 问题

标签 java floating-point floating-accuracy

我正在开发一个需要计算数字立方的程序。长话短说,我需要将数字与字符串进行比较,因此当我转换为字符串时,我需要去掉 double 给出的小数位。为此,我使用 Math.round 并将其保存为 long。这对于相对正常的数字来说效果很好,但数字可以达到 999,999。

我使用了 275393(一个给定的测试数字,所以我假设它对于我正在处理的问题来说一定是正确的),计算器和计算机似乎都没有得到正确的答案。正确答案应该在结果中的某处包含 123457,但计算器有 12346(我认为这只是四舍五入,因为它在此之后停止列出数字),而计算机有 123456(计算机在这一点之后停止列出数字)。四舍五入是否会带来问题(不应该,因为我很确定它只会四舍五入到十分位,但谁知道)?还是别的什么?

最佳答案

Math.pow() 接受两个 double 并返回一个 doubledouble 的精度不足以表示 2753933 = 20886164356123457(精确)。

解决方案是使用 BigInteger.pow() .

关于Java Math.pow 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8491881/

相关文章:

java - 使用SQLite内存数据库Java堆空间?

java - .等于不使用扫描仪

Java - 迭代for循环来创建游戏玩家并设置他们的名字

javascript - Python 与 Javascript 浮点运算给出了截然不同的答案。我究竟做错了什么?

C++ 警告 : division of double by zero

python - 如何避免浮点运算问题?

javascript - JavaScript 中处理大数(BigNum)的标准方案是什么?

VBScript 和浮点( double )数字 : Round function returns wrong result

java - 从 TabActivity Activity 分支其他 Activity

math - float 学坏了吗?