首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java中的Power precision

Java中的Power precision
EN

Stack Overflow用户
提问于 2012-10-25 08:20:53
回答 4查看 714关注 0票数 0

我尝试在Java中对小于1的指数执行幂计算,例如:(2^0.333)但是当我在Java中计算它时,我得到的结果比在普通计算器上进行相同计算的精度要低。

在Java中

代码语言:javascript
复制
double f = Math.pow(2.0,0.333);
System.out.println(f);

//output
//1.2596299799473993

在一个普通的计算器里我得到了

代码语言:javascript
复制
//output
//1.2596299799473993502546921425703

在java中如何在不损失精度的情况下获得相同的结果?

任何帮助我们都将不胜感激

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-10-25 08:30:27

Java内置的浮点运算的精度是有限的。内置的BigDecimal类没有提供您需要的操作(实数求幂,甚至是日志)。您可以使用第三方应用程序,如Apfloat (请参阅ApfloatMath类)或JScience,这两个应用程序都可以执行任意精度的求幂计算。

票数 2
EN

Stack Overflow用户

发布于 2012-10-25 08:31:52

仅使用基元双精度不能获得更精确的值。相反,可以使用BigDecimal,它用于表示任意精确的浮点值。

请注意,您将需要一个自定义pow函数来处理BigDecimal。可以在in this SO answer中找到一个实现。

票数 1
EN

Stack Overflow用户

发布于 2012-10-25 08:27:43

双精度浮点值,就像您在Java代码中使用的那样,只能准确地表示15到17个有效数字。除非您正在使用的Windows计算器应用程序在内部使用了更高精度的数据类型(这不太可能),否则这些数字很可能是没有意义的。

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

https://stackoverflow.com/questions/13059842

复制
相关文章

相似问题

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