首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java Math.pow的错误结果?

Java Math.pow的错误结果?
EN

Stack Overflow用户
提问于 2018-09-05 01:06:09
回答 2查看 0关注 0票数 0

如果您尝试运行以下代码

代码语言:javascript
复制
public class Main {
   public static void main(String[] args) {
       long a = (long)Math.pow(13, 15);
       System.out.println(a + " " + a%13);
   }
}

你会得到“51185893014090752 8”

的正确值13 ^ 1551185893014090757,即,比由返回的结果更大的Math.pow5。任何可能导致它的想法?

EN

回答 2

Stack Overflow用户

发布于 2018-09-05 10:02:08

您已经超过了双精度浮点值中可用的有效位数(~15到16)。一旦你这样做,你不能指望你的结果中最不重要的数字实际上是有意义的/精确的。

如果您需要在Java中进行任意精确的算术运算,请考虑使用BigIntegerBigDecimal

票数 0
EN

Stack Overflow用户

发布于 2018-09-05 10:52:18

double具有有限精度,其尾数为52位,大致等于15到16位小数。因此,您尝试计算的数字不能再精确地用双精度表示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档